Integration test bundle for core infrastructure.
Validate security and completeness of the core boilerplate through:
- Security tests - TLS, secrets, permissions, network isolation
- Integration tests - Service connectivity, health checks, databases
- Variation testing - Different configuration combinations
10 self-hosted application patterns ready for deployment:
| Pattern | Service URL | Status | Description |
|---|---|---|---|
| GoToSocial | social.dockerlab.peermesh.org |
Lightweight ActivityPub social network | |
| WriteFreely | blog.dockerlab.peermesh.org |
Minimalist federated blogging platform | |
| PeerTube | video.dockerlab.peermesh.org |
Decentralized video hosting with ActivityPub | |
| Listmonk | newsletter.dockerlab.peermesh.org |
Self-hosted newsletter and mailing list manager | |
| rss2bsky | N/A (daemon) | RSS to Bluesky syndication bridge | |
| ActivityPods | pods.dockerlab.peermesh.org |
Solid pods with ActivityPub integration | |
| n8n | automation.dockerlab.peermesh.org |
Workflow automation platform | |
| Pixelfed | photos.dockerlab.peermesh.org |
Federated image sharing (Instagram alternative) | |
| Castopod | podcast.dockerlab.peermesh.org |
Podcast hosting with ActivityPub | |
| Manyfold | models.dockerlab.peermesh.org |
3D model library management |
Deploy core infrastructure only (Traefik, PostgreSQL, Redis):
git clone https://github.com/peermesh/core-stack-test
cd core-stack-test
cp .env.example .env
./scripts/generate-secrets.sh
# Minimal deployment (foundation + GoToSocial)
docker compose --profile traefik --profile gotosocial up -dNote: This repository includes a standalone foundation layer (
./foundation/) so it can run without the externalpeer-mesh-docker-labdependency.
Deploy all patterns with full monitoring:
git clone https://github.com/peermesh/core-stack-test
cd core-stack-test
cp .env.example .env
./scripts/generate-secrets.sh
# Full deployment (requires 8GB+ RAM)
docker compose --profile full up -dDeploy a specific pattern:
# Example: GoToSocial only
docker compose --profile gotosocial up -d
# Example: WriteFreely only
docker compose --profile writefreely up -dLightweight ActivityPub social network server.
- URL:
https://social.dockerlab.peermesh.org - Stack: Go, SQLite/PostgreSQL
- Resources: 256MB RAM minimum
- Docs: patterns/gotosocial/README.md
docker compose --profile gotosocial up -dMinimalist, federated blogging platform.
- URL:
https://blog.dockerlab.peermesh.org - Stack: Go, SQLite/MySQL
- Resources: 128MB RAM minimum
- Docs: patterns/writefreely/README.md
docker compose --profile writefreely up -dDecentralized video hosting with ActivityPub federation.
- URL:
https://video.dockerlab.peermesh.org - Stack: Node.js, PostgreSQL, Redis
- Resources: 2GB RAM minimum
- Docs: patterns/peertube/README.md
docker compose --profile peertube up -dHigh-performance newsletter and mailing list manager.
- URL:
https://newsletter.dockerlab.peermesh.org - Stack: Go, PostgreSQL
- Resources: 256MB RAM minimum
- Docs: patterns/listmonk/README.md
docker compose --profile listmonk up -dRSS feed to Bluesky syndication daemon.
- URL: N/A (background daemon)
- Stack: Python
- Resources: 64MB RAM minimum
- Docs: patterns/rss2bsky/README.md
docker compose --profile rss2bsky up -dSolid pods with ActivityPub integration for decentralized data.
- URL:
https://pods.dockerlab.peermesh.org - Stack: Node.js, MongoDB
- Resources: 512MB RAM minimum
- Docs: patterns/activitypods/README.md
docker compose --profile activitypods up -dWorkflow automation platform (Zapier/IFTTT alternative).
- URL:
https://automation.dockerlab.peermesh.org - Stack: Node.js, PostgreSQL
- Resources: 512MB RAM minimum
- Docs: patterns/n8n/README.md
docker compose --profile n8n up -dFederated image sharing platform (Instagram alternative).
- URL:
https://photos.dockerlab.peermesh.org - Stack: PHP/Laravel, PostgreSQL, Redis
- Resources: 1GB RAM minimum
- Docs: patterns/pixelfed/README.md
docker compose --profile pixelfed up -dPodcast hosting platform with ActivityPub federation.
- URL:
https://podcast.dockerlab.peermesh.org - Stack: PHP, MySQL/MariaDB
- Resources: 512MB RAM minimum
- Docs: patterns/castopod/README.md
docker compose --profile castopod up -d3D model library management for makers.
- URL:
https://models.dockerlab.peermesh.org - Stack: Ruby on Rails, PostgreSQL
- Resources: 512MB RAM minimum
- Docs: patterns/manyfold/README.md
docker compose --profile manyfold up -d- Docker 24+
- Docker Compose v2
- 4GB RAM minimum (8GB for full stack)
- Domain with DNS configured
- Ports 80, 443 open
Point these subdomains to your VPS IP:
social.dockerlab.peermesh.org -> YOUR_VPS_IP
blog.dockerlab.peermesh.org -> YOUR_VPS_IP
video.dockerlab.peermesh.org -> YOUR_VPS_IP
newsletter.dockerlab.peermesh.org -> YOUR_VPS_IP
pods.dockerlab.peermesh.org -> YOUR_VPS_IP
automation.dockerlab.peermesh.org -> YOUR_VPS_IP
photos.dockerlab.peermesh.org -> YOUR_VPS_IP
podcast.dockerlab.peermesh.org -> YOUR_VPS_IP
models.dockerlab.peermesh.org -> YOUR_VPS_IP
# 1. SSH into VPS
ssh user@your-vps
# 2. Clone repository
git clone https://github.com/peermesh/core-stack-test
cd core-stack-test
# 3. Configure environment
cp .env.example .env
nano .env # Update domain, email, etc.
# 4. Generate secrets
./scripts/generate-secrets.sh
# 5. Deploy
docker compose --profile full up -d
# 6. Verify deployment
./tests/run-all.shTraefik handles automatic Let's Encrypt certificate provisioning:
# In .env
ACME_EMAIL=admin@yourdomain.org
DOMAIN=dockerlab.peermesh.orgcore-stack-test/
├── docker-compose.yml # Main stack definition
├── .env.example # Configuration template
├── patterns/ # Pattern-specific configurations
│ ├── gotosocial/
│ ├── writefreely/
│ ├── peertube/
│ ├── listmonk/
│ ├── rss2bsky/
│ ├── activitypods/
│ ├── n8n/
│ ├── pixelfed/
│ ├── castopod/
│ └── manyfold/
├── variations/ # Alternative configurations
│ ├── minimal/ # Smallest testable bundle
│ └── full-stack/ # All services enabled
├── tests/ # Test scripts
│ ├── security/ # Security validation
│ └── integration/ # Service integration
└── docs/ # Documentation
./tests/run-all.sh./tests/security/tls-check.sh
./tests/security/secrets-scan.sh
./tests/security/permissions-check.sh./tests/integration/health-checks.sh
./tests/integration/connectivity.sh
./tests/integration/database.sh- VISION.md - Project goals and principles
- docs/TESTS.md - Test documentation
- docs/VARIATIONS.md - Configuration variations
- peermesh/core - Base infrastructure
Original source code and documentation in this repository are licensed under the PolyForm Noncommercial License 1.0.0 (LICENSE). See COPYRIGHT, COMMERCIAL-LICENSE.md for commercial use, THIRD_PARTY_NOTICES.md for third-party components, and DEPENDENCY-LICENSE-POLICY.md for how project and dependency licenses interact.
Third-party components (including container images and upstream pattern applications) remain under their respective licenses; the project license does not replace them.