fix: Regenerated all 842 template docs pages with upstream links from S…

- scripts/generate-docs.js
- docs/templates/index.md
- docs/templates/adminer.md
- docs/categories/index.md
- docs/.vitepress/data/templates.data.json
- docs/.vitepress/config.mts

GSD-Task: S05/T01
This commit is contained in:
John Doe
2026-05-07 23:18:32 -04:00
parent 2ebef8f496
commit f69a48da18
116 changed files with 4631 additions and 3591 deletions
+306 -253
View File
@@ -136,15 +136,16 @@
"yunohost"
],
"sections": {
"quickStart": "1. **Clone and configure:**\r\n\r\n ```bash\r\n cp .env.example .env\r\n # Edit .env with your configuration\r\n ```\r\n\r\n2. **Start the service:**\r\n\r\n ```bash\r\n docker compose up -d\r\n ```\r\n\r\n3. **Verify it's running:**\r\n\r\n ```bash\r\n docker compose ps\r\n curl -s http://localhost:8080/ | head -c 200\r\n ```\r\n\r\n4. **Access the application:**\r\n\r\n Open [http://localhost:8080](http://localhost:8080) in your browser.",
"architecture": "| Component | Image | Purpose |\r\n|-----------|-------|---------|\r\n| `adminer` | docker.io/library/adminer:latest | Main application service |\r\n| `adminer_data` | (volume) | Persistent data storage |\r\n\r\nServices communicate over a shared Docker network. Data is persisted in named volumes.",
"configuration": "Environment variables (set in `.env`):\r\n\r\n| Variable | Default | Description |\r\n|----------|---------|-------------|\r\n| `ADMINER_PORT` | `8080` | Configuration variable |",
"troubleshooting": "**Container won't start:**\r\n```bash\r\ndocker compose logs adminer\r\n```\r\n\r\n**Port conflict:**\r\nEdit `.env` and change `ADMINER_PORT` to an available port, then restart:\r\n```bash\r\ndocker compose down && docker compose up -d\r\n```\r\n\r\n**Permission errors:**\r\nEnsure the Docker user has write access to the data volume:\r\n```bash\r\ndocker compose exec adminer ls -la /data\r\n```\r\n\r\n**Health check failing:**\r\n```bash\r\ndocker compose ps # Check STATUS column\r\ndocker inspect adminer --format='{{json .State.Health}}'\r\n```",
"backup": "**Backup:**\r\n```bash\r\n# Stop the service\r\ndocker compose down\r\n\r\n# Backup the data volume\r\ndocker run --rm -v adminer_data:/data -v $(pwd):/backup alpine tar czf /backup/adminer-backup-$(date +%Y%m%d).tar.gz /data\r\n\r\n# Restart\r\ndocker compose up -d\r\n```\r\n\r\n**Restore:**\r\n```bash\r\ndocker compose down\r\ndocker run --rm -v adminer_data:/data -v $(pwd):/backup alpine sh -c \"rm -rf /data/* && tar xzf /backup/adminer-backup.tar.gz -C /\"\r\ndocker compose up -d\r\n```",
"links": "- **Docker Image:** `docker.io/library/adminer:latest`",
"prerequisites": "- Docker Engine 20.10+\r\n- Docker Compose v2.0+\r\n- 512MB+ RAM recommended\r\n- 1GB+ free disk space for data storage"
"projectOverview": "[Adminer](https://github.com/vrana/adminer) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Adminer in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `adminer` | `docker.io/library/adminer:latest` | Main application service |\n\n### Volumes\n\n| Volume | Mount | Purpose |\n|--------|-------|---------|\n| `adminer_data` | (varies) | Persistent data storage |\n\n### Health Check\n\nThe container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:8080/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:8080](http://localhost:8080) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `ADMINER_PORT` | `8080` | adminer host port (default: 8080) |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 8080 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec adminer ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v adminer_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/adminer-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v adminer_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/adminer-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [Adminer](https://github.com/vrana/adminer)\n- **Docker Image:** `docker.io/library/adminer:latest`\n- **Issues:** [GitHub Issues](https://github.com/vrana/adminer/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "Self-hosted Adminer deployment via Docker\r\n\r\nThis template provides a containerized deployment of [Adminer](adminer) using Docker Compose."
"intro": "Web-based database management tool"
},
{
"id": "adminerevo",
@@ -1064,15 +1065,16 @@
"yunohost"
],
"sections": {
"quickStart": "1. **Clone and configure:**\r\n\r\n ```bash\r\n cp .env.example .env\r\n # Edit .env with your configuration\r\n ```\r\n\r\n2. **Start the service:**\r\n\r\n ```bash\r\n docker compose up -d\r\n ```\r\n\r\n3. **Verify it's running:**\r\n\r\n ```bash\r\n docker compose ps\r\n curl -s http://localhost:8080/ | head -c 200\r\n ```\r\n\r\n4. **Access the application:**\r\n\r\n Open [http://localhost:8080](http://localhost:8080) in your browser.",
"architecture": "| Component | Image | Purpose |\r\n|-----------|-------|---------|\r\n| `backdrop` | docker.io/library/backdrop:latest | Main application service |\r\n| `backdrop_data` | (volume) | Persistent data storage |\r\n\r\nServices communicate over a shared Docker network. Data is persisted in named volumes.",
"configuration": "Environment variables (set in `.env`):\r\n\r\n| Variable | Default | Description |\r\n|----------|---------|-------------|\r\n| `BACKDROP_PORT` | `8080` | Configuration variable |",
"troubleshooting": "**Container won't start:**\r\n```bash\r\ndocker compose logs backdrop\r\n```\r\n\r\n**Port conflict:**\r\nEdit `.env` and change `BACKDROP_PORT` to an available port, then restart:\r\n```bash\r\ndocker compose down && docker compose up -d\r\n```\r\n\r\n**Permission errors:**\r\nEnsure the Docker user has write access to the data volume:\r\n```bash\r\ndocker compose exec backdrop ls -la /data\r\n```\r\n\r\n**Health check failing:**\r\n```bash\r\ndocker compose ps # Check STATUS column\r\ndocker inspect backdrop --format='{{json .State.Health}}'\r\n```",
"backup": "**Backup:**\r\n```bash\r\n# Stop the service\r\ndocker compose down\r\n\r\n# Backup the data volume\r\ndocker run --rm -v backdrop_data:/data -v $(pwd):/backup alpine tar czf /backup/backdrop-backup-$(date +%Y%m%d).tar.gz /data\r\n\r\n# Restart\r\ndocker compose up -d\r\n```\r\n\r\n**Restore:**\r\n```bash\r\ndocker compose down\r\ndocker run --rm -v backdrop_data:/data -v $(pwd):/backup alpine sh -c \"rm -rf /data/* && tar xzf /backup/backdrop-backup.tar.gz -C /\"\r\ndocker compose up -d\r\n```",
"links": "- **Docker Image:** `docker.io/library/backdrop:latest`",
"prerequisites": "- Docker Engine 20.10+\r\n- Docker Compose v2.0+\r\n- 512MB+ RAM recommended\r\n- 1GB+ free disk space for data storage"
"projectOverview": "[Backdrop](https://github.com/backdrop/backdrop) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Backdrop in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `backdrop` | `docker.io/library/backdrop:latest` | Main application service |\n\n### Volumes\n\n| Volume | Mount | Purpose |\n|--------|-------|---------|\n| `backdrop_data` | (varies) | Persistent data storage |\n\n### Health Check\n\nThe container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:8080/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:8080](http://localhost:8080) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `BACKDROP_PORT` | `8080` | backdrop host port (default: 8080) |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 8080 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec backdrop ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v backdrop_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/backdrop-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v backdrop_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/backdrop-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [Backdrop](https://github.com/backdrop/backdrop)\n- **Docker Image:** `docker.io/library/backdrop:latest`\n- **Issues:** [GitHub Issues](https://github.com/backdrop/backdrop/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "Self-hosted Backdrop deployment via Docker\r\n\r\nThis template provides a containerized deployment of [Backdrop](backdrop) using Docker Compose."
"intro": "Open-source CMS — Drupal fork for simplicity"
},
{
"id": "backrest",
@@ -1860,15 +1862,16 @@
"portainer"
],
"sections": {
"quickStart": "1. **Clone and configure:**\r\n\r\n ```bash\r\n cp .env.example .env\r\n # Edit .env with your configuration\r\n ```\r\n\r\n2. **Start the service:**\r\n\r\n ```bash\r\n docker compose up -d\r\n ```\r\n\r\n3. **Verify it's running:**\r\n\r\n ```bash\r\n docker compose ps\r\n curl -s http://localhost:8080/ | head -c 200\r\n ```\r\n\r\n4. **Access the application:**\r\n\r\n Open [http://localhost:8080](http://localhost:8080) in your browser.",
"architecture": "| Component | Image | Purpose |\r\n|-----------|-------|---------|\r\n| `caddy` | docker.io/caddy/caddy:latest | Main application service |\r\n| `caddy_data` | (volume) | Persistent data storage |\r\n\r\nServices communicate over a shared Docker network. Data is persisted in named volumes.",
"configuration": "Environment variables (set in `.env`):\r\n\r\n| Variable | Default | Description |\r\n|----------|---------|-------------|\r\n| `CADDY_PORT` | `8080` | Configuration variable |",
"troubleshooting": "**Container won't start:**\r\n```bash\r\ndocker compose logs caddy\r\n```\r\n\r\n**Port conflict:**\r\nEdit `.env` and change `CADDY_PORT` to an available port, then restart:\r\n```bash\r\ndocker compose down && docker compose up -d\r\n```\r\n\r\n**Permission errors:**\r\nEnsure the Docker user has write access to the data volume:\r\n```bash\r\ndocker compose exec caddy ls -la /data\r\n```\r\n\r\n**Health check failing:**\r\n```bash\r\ndocker compose ps # Check STATUS column\r\ndocker inspect caddy --format='{{json .State.Health}}'\r\n```",
"backup": "**Backup:**\r\n```bash\r\n# Stop the service\r\ndocker compose down\r\n\r\n# Backup the data volume\r\ndocker run --rm -v caddy_data:/data -v $(pwd):/backup alpine tar czf /backup/caddy-backup-$(date +%Y%m%d).tar.gz /data\r\n\r\n# Restart\r\ndocker compose up -d\r\n```\r\n\r\n**Restore:**\r\n```bash\r\ndocker compose down\r\ndocker run --rm -v caddy_data:/data -v $(pwd):/backup alpine sh -c \"rm -rf /data/* && tar xzf /backup/caddy-backup.tar.gz -C /\"\r\ndocker compose up -d\r\n```",
"links": "- **Docker Image:** `docker.io/caddy/caddy:latest`",
"prerequisites": "- Docker Engine 20.10+\r\n- Docker Compose v2.0+\r\n- 512MB+ RAM recommended\r\n- 1GB+ free disk space for data storage"
"projectOverview": "[Caddy](https://github.com/caddyserver/caddy) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Caddy in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `caddy` | `docker.io/caddy/caddy:latest` | Reverse proxy / web server |\n\n### Volumes\n\n| Volume | Mount | Purpose |\n|--------|-------|---------|\n| `caddy_data` | (varies) | Persistent data storage |\n\n### Health Check\n\nThe container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:8080/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:8080](http://localhost:8080) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `CADDY_PORT` | `8080` | Caddy host port (default: 8080) |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 8080 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec caddy ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v caddy_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/caddy-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v caddy_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/caddy-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [Caddy](https://github.com/caddyserver/caddy)\n- **Docker Image:** `docker.io/caddy/caddy:latest`\n- **Issues:** [GitHub Issues](https://github.com/caddyserver/caddy/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "Self-hosted Caddy deployment via Docker\r\n\r\nThis template provides a containerized deployment of [Caddy](caddy) using Docker Compose."
"intro": "Automatic-HTTPS web server"
},
{
"id": "calcom",
@@ -3023,15 +3026,16 @@
"yunohost"
],
"sections": {
"quickStart": "1. **Clone and configure:**\r\n\r\n ```bash\r\n cp .env.example .env\r\n # Edit .env with your configuration\r\n ```\r\n\r\n2. **Start the service:**\r\n\r\n ```bash\r\n docker compose up -d\r\n ```\r\n\r\n3. **Verify it's running:**\r\n\r\n ```bash\r\n docker compose ps\r\n curl -s http://localhost:8080/ | head -c 200\r\n ```\r\n\r\n4. **Access the application:**\r\n\r\n Open [http://localhost:8080](http://localhost:8080) in your browser.",
"architecture": "| Component | Image | Purpose |\r\n|-----------|-------|---------|\r\n| `couchdb` | docker.io/library/couchdb:latest | Main application service |\r\n| `couchdb_data` | (volume) | Persistent data storage |\r\n\r\nServices communicate over a shared Docker network. Data is persisted in named volumes.",
"configuration": "Environment variables (set in `.env`):\r\n\r\n| Variable | Default | Description |\r\n|----------|---------|-------------|\r\n| `COUCHDB_PORT` | `8080` | Configuration variable |",
"troubleshooting": "**Container won't start:**\r\n```bash\r\ndocker compose logs couchdb\r\n```\r\n\r\n**Port conflict:**\r\nEdit `.env` and change `COUCHDB_PORT` to an available port, then restart:\r\n```bash\r\ndocker compose down && docker compose up -d\r\n```\r\n\r\n**Permission errors:**\r\nEnsure the Docker user has write access to the data volume:\r\n```bash\r\ndocker compose exec couchdb ls -la /data\r\n```\r\n\r\n**Health check failing:**\r\n```bash\r\ndocker compose ps # Check STATUS column\r\ndocker inspect couchdb --format='{{json .State.Health}}'\r\n```",
"backup": "**Backup:**\r\n```bash\r\n# Stop the service\r\ndocker compose down\r\n\r\n# Backup the data volume\r\ndocker run --rm -v couchdb_data:/data -v $(pwd):/backup alpine tar czf /backup/couchdb-backup-$(date +%Y%m%d).tar.gz /data\r\n\r\n# Restart\r\ndocker compose up -d\r\n```\r\n\r\n**Restore:**\r\n```bash\r\ndocker compose down\r\ndocker run --rm -v couchdb_data:/data -v $(pwd):/backup alpine sh -c \"rm -rf /data/* && tar xzf /backup/couchdb-backup.tar.gz -C /\"\r\ndocker compose up -d\r\n```",
"links": "- **Docker Image:** `docker.io/library/couchdb:latest`",
"prerequisites": "- Docker Engine 20.10+\r\n- Docker Compose v2.0+\r\n- 512MB+ RAM recommended\r\n- 1GB+ free disk space for data storage"
"projectOverview": "[Couchdb](https://github.com/apache/couchdb) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Couchdb in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `couchdb` | `docker.io/library/couchdb:latest` | Database storage |\n\n### Volumes\n\n| Volume | Mount | Purpose |\n|--------|-------|---------|\n| `couchdb_data` | (varies) | Persistent data storage |\n\n### Health Check\n\nThe container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:8080/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:8080](http://localhost:8080) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `COUCHDB_PORT` | `8080` | couchdb host port (default: 8080) |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 8080 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec couchdb ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v couchdb_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/couchdb-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v couchdb_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/couchdb-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [Couchdb](https://github.com/apache/couchdb)\n- **Docker Image:** `docker.io/library/couchdb:latest`\n- **Issues:** [GitHub Issues](https://github.com/apache/couchdb/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "Self-hosted Couchdb deployment via Docker\r\n\r\nThis template provides a containerized deployment of [Couchdb](couchdb) using Docker Compose."
"intro": "Document-oriented NoSQL database with replication"
},
{
"id": "crewai",
@@ -3342,13 +3346,16 @@
"sql"
],
"sections": {
"quickStart": "1. **Start the server:**\n\n ```bash\n cp .env.example .env\n docker compose up -d\n ```\n\n2. **Connect using the MySQL client:**\n\n ```bash\n mysql -h 127.0.0.1 -P 8000 -u root\n ```\n\n3. **Run a query:**\n\n ```sql\n SELECT 'Hello, Databend!' AS greeting;\n ```\n\n4. **Create a table and insert data:**\n\n ```sql\n CREATE TABLE IF NOT EXISTS books (\n id INT,\n title VARCHAR,\n author VARCHAR,\n year INT\n );\n\n INSERT INTO books VALUES\n (1, 'The Great Gatsby', 'F. Scott Fitzgerald', 1925),\n (2, 'To Kill a Mockingbird', 'Harper Lee', 1960);\n\n SELECT * FROM books WHERE year > 1950;\n ```\n\n5. **Use the HTTP handler (REST API):**\n\n ```bash\n curl -X POST http://localhost:8124/v1/query \\\n -H \"Content-Type: application/json\" \\\n -d '{\"sql\": \"SELECT * FROM books\"}'\n ```",
"configuration": "Copy `.env.example` to `.env` and edit:\n\n### Optional Variables\n\n| Variable | Default | Description |\n|-------------------------|----------|---------------------------------------------------------------|\n| `DATABEND_PORT` | `8000` | MySQL wire protocol port |\n| `DATABEND_HTTP_PORT` | `8124` | HTTP handler (REST query) port |\n| `DATABEND_MINIO_PORT` | `9000` | Embedded MinIO port (when MINIO_ENABLED=true) |\n| `QUERY_DEFAULT_USER` | `root` | Default SQL user |\n| `QUERY_DEFAULT_PASSWORD`| (empty) | Default SQL password |\n| `QUERY_STORAGE_TYPE` | `fs` | Storage backend: `fs` (local) or `s3` |\n| `MINIO_ENABLED` | `false` | Enable built-in MinIO for local S3-compatible object storage |",
"apiEndpoints": "Databend exposes both MySQL-compatible and REST interfaces:\n\n| Interface | Port | Protocol | Description |\n|---------------|-------|-----------------|------------------------------------|\n| MySQL Handler | 8000 | MySQL wire | Connect with any MySQL client |\n| HTTP Handler | 8124 | HTTP REST | SQL queries via JSON API |\n| MinIO (opt) | 9000 | S3-compatible | Built-in object storage (MinIO) |\n\n### REST API Example\n\n```bash\ncurl -X POST http://localhost:8124/v1/query \\\n -H \"Content-Type: application/json\" \\\n -d '{\"sql\": \"SELECT database(), version()\"}'\n```",
"healthCheck": "**MySQL handler health:**\n\n```bash\nmysql -h 127.0.0.1 -P 8000 -u root -e \"SELECT 1\"\n```\n\n**HTTP handler health:**\n\n```bash\ncurl -s -X POST http://localhost:8124/v1/query \\\n -H \"Content-Type: application/json\" \\\n -d '{\"sql\": \"SELECT 1\"}' | grep -q \"1\" && echo \"healthy\"\n```\n\nA healthy server responds with query results on either interface.",
"troubleshooting": "| Symptom | Likely Cause | Fix |\n|-----------------------------------------------------|----------------------------------|----------------------------------------------------------|\n| `ERROR 2013 (HY000): Lost connection` | Server not ready | Wait a few seconds and retry |\n| `Access denied for user` | Wrong credentials | Verify `QUERY_DEFAULT_USER` and `QUERY_DEFAULT_PASSWORD` |\n| Query returns no results | Table or database doesn't exist | Create the database first with `CREATE DATABASE` |\n| `No handler for protocol` | Wrong port | Use port 8000 (MySQL) or 8124 (HTTP) |"
"projectOverview": "[Databend](https://github.com/databendlabs/databend) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Databend in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `databend` | `datafuselabs/databend:latest` | Main application service |\n\n### Volumes\n\n| Volume | Mount | Purpose |\n|--------|-------|---------|\n| `databend_data` | (varies) | Persistent data storage |\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:8000/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:8000](http://localhost:8000) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `DATABEND_PORT` | `8000` | mysql -h 127.0.0.1 -P 8000 -u root |\n| `DATABEND_HTTP_PORT` | `8124` | HTTP handler port for REST API queries (default: 8124) |\n| `QUERY_DEFAULT_USER` | `root` | Query user credentials (default: root with no password) |\n| `QUERY_DEFAULT_PASSWORD` | `—` | QUERY_DEFAULT_PASSWORD configuration value |\n| `QUERY_STORAGE_TYPE` | `fs` | Storage backend: 'fs' (local filesystem) or 's3' |\n| `AWS_S3_ENDPOINT` | `https://s3.amazonaws.com` | Set QUERY_STORAGE_TYPE=s3 and configure: |\n| `AWS_S3_BUCKET` | `my-databend-bucket` | AWS_S3_BUCKET configuration value |\n| `AWS_ACCESS_KEY_ID` | `your-access-key` | AWS_ACCESS_KEY_ID configuration value |\n| `AWS_SECRET_ACCESS_KEY` | `your-secret-key` | AWS_SECRET_ACCESS_KEY configuration value |\n| `MINIO_ENABLED` | `false` | container for local object storage testing. MinIO available on port 9000. |\n| `DATABEND_MINIO_PORT` | `9000` | Host port for embedded MinIO S3-compatible API (default: 9000) |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 8000 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec databend ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v databend_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/databend-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v databend_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/databend-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [Databend](https://github.com/databendlabs/databend)\n- **Docker Image:** `datafuselabs/databend:latest`\n- **Issues:** [GitHub Issues](https://github.com/databendlabs/databend/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "[Databend](https://databend.com) is an open-source cloud data warehouse. It provides fast, elastic SQL analytics on object storage with MySQL wire-compatible protocol, real-time columnar performance, and instant scaling."
"intro": "Cloud-native data warehouse"
},
{
"id": "databunker",
@@ -3961,13 +3968,16 @@
"rag"
],
"sections": {
"quickStart": "1. **Copy and edit the environment file:**\n\n ```bash\n cp .env.example .env\n # Set SECRET_KEY, DOCSGPT_DB_PASSWORD, and at least one LLM provider key\n ```\n\n2. **Start the services:**\n\n ```bash\n docker compose up -d\n ```\n\n3. **Access the web UI:**\n\n Open [http://localhost:3000](http://localhost:3000) in your browser.\n\n4. **Verify the API:**\n\n ```bash\n curl http://localhost:3000/api/health\n ```\n\n Expected response: `{\"status\":\"ok\"}` or similar health indication.",
"configuration": "Copy `.env.example` to `.env` and edit:\n\n| Variable | Default | Description |\n|------------------------|---------------------------------------|-------------------------------------------------|\n| `SECRET_KEY` | — **(required)** | Application secret key (generate with `openssl rand -hex 32`) |\n| `DOCSGPT_DB_PASSWORD` | — **(required)** | PostgreSQL password |\n| `DOCSGPT_DB_USER` | `docsgpt` | PostgreSQL user |\n| `DOCSGPT_DB_NAME` | `docsgpt` | PostgreSQL database name |\n| `DOCSGPT_PORT` | `3000` | Host port for the web UI and API |\n| `DOCSGPT_DB_PORT` | `5432` | Host port for PostgreSQL |\n| `LLM_NAME` | `gpt-4o` | LLM model to use for answering questions |\n| `OPENAI_API_KEY` | — | OpenAI API key (required for OpenAI models) |\n| `OLLAMA_BASE_URL` | `http://host.docker.internal:11434` | Local Ollama endpoint |\n| `EMBEDDINGS_NAME` | — | Override embedding model (optional) |\n| `EMBEDDINGS_KEY` | — | Embedding API key (optional) |\n| `APP_ENV` | `production` | Application environment |",
"apiEndpoints": "| Endpoint | Method | Description |\n|--------------------------|--------|--------------------------------------------|\n| `/api/health` | GET | Health check |\n| `/api/train` | POST | Index documentation (train on new content) |\n| `/api/ask` | POST | Ask a question against indexed content |\n| `/api/training-examples` | GET | List indexed documents |\n| `/api/chat` | POST | Chat with context (conversation mode) |\n\n### Ask a Question\n\n```bash\ncurl -X POST http://localhost:3000/api/ask \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"question\": \"How do I install the CLI?\",\n \"history\": []\n }'\n```\n\n### Index Documentation\n\n```bash\ncurl -X POST http://localhost:3000/api/train \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"url\": \"https://docs.example.com/getting-started\"\n }'\n```",
"healthCheck": "```bash\ncurl http://localhost:3000/api/health\n```\n\nExpected response:\n```json\n{\"status\":\"ok\"}\n```",
"troubleshooting": "| Symptom | Likely Cause | Fix |\n|--------------------------------------------|-----------------------------------|------------------------------------------------------|\n| `Connection refused` on port 3000 | Container still starting | Wait and retry — first start can take 60s+ |\n| `401 Unauthorized` when asking questions | No API key configured | Set `OPENAI_API_KEY` in `.env` |\n| Answers are low quality | Wrong model or no RAG content | Index documentation first, or change `LLM_NAME` |\n| Database connection error | Wrong DB credentials | Verify `DOCSGPT_DB_PASSWORD` matches between services|\n| Ollama returns 404 | Model not pulled | Run `docker exec docsgpt ollama pull <model>` |"
"projectOverview": "[DocsGPT](https://github.com/arc53/DocsGPT) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run DocsGPT in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `postgres` | `postgres:16` | Database storage |\n| `docsgpt` | `arc53/docsgpt:latest` | Main application service |\n\n### Volumes\n\n| Volume | Mount | Purpose |\n|--------|-------|---------|\n| `docsgpt_postgres_data` | (varies) | Persistent data storage |\n\n### Health Check\n\nThe container runs a health check every 10s (5 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:5432/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:5432](http://localhost:5432) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `SECRET_KEY` | `change-me-to-a-random-64-char-hex-string` | Generate with: openssl rand -hex 32 |\n| `DOCSGPT_DB_PASSWORD` | `change-me-to-a-strong-password` | Database password (required) |\n| `DOCSGPT_PORT` | `3000` | DocsGPT application port (default: 3000) |\n| `DOCSGPT_DB_PORT` | `5432` | Host port for PostgreSQL (default: 5432) |\n| `DOCSGPT_DB_USER` | `docsgpt` | ── Database ─────────────────────────────────────────────────────── |\n| `DOCSGPT_DB_NAME` | `docsgpt` | DOCSGPT_DB_NAME configuration value |\n| `LLM_NAME` | `gpt-4o` | Primary LLM provider (e.g., gpt-4o, gpt-4-turbo) |\n| `OPENAI_API_KEY` | `—` | OpenAI API key (required for OpenAI models) |\n| `OLLAMA_BASE_URL` | `http://host.docker.internal:11434` | For local inference via Ollama |\n| `EMBEDDINGS_NAME` | `—` | Override default embedding provider if needed |\n| `EMBEDDINGS_KEY` | `—` | EMBEDDINGS_KEY configuration value |\n| `APP_ENV` | `production` | ── Application ──────────────────────────────────────────────────── |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 5432 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec postgres ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v docsgpt_postgres_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/docsgpt-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v docsgpt_postgres_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/docsgpt-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [DocsGPT](https://github.com/arc53/DocsGPT)\n- **Docker Image:** `postgres:16`\n- **Issues:** [GitHub Issues](https://github.com/arc53/DocsGPT/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "[DocsGPT](https://docsgpt.ai/) is an open-source platform that turns your documentation, codebase, and knowledge base into a natural-language Q&A system. Index your content and ask questions with LLM-powered answers and source citations."
"intro": "AI-powered documentation assistant"
},
{
"id": "docsify",
@@ -4085,12 +4095,16 @@
"platform"
],
"sections": {
"quickStart": "1. **Start the service:**\n\n ```bash\n docker compose up -d\n ```\n\n2. **Access the dashboard** at [http://localhost:3000](http://localhost:3000)\n\n3. **Create your admin account** on first launch.\n\n4. **Enable Docker management** by uncommenting the `/var/run/docker.sock` mount in `docker-compose.yml` — required to manage containers from the dashboard.",
"configuration": "Copy `.env.example` to `.env` and edit:\n\n| Variable | Default | Description |\n|-----------------------|--------------|-----------------------------------------------|\n| `DOKPLOY_PORT` | `3000` | Host port for the web dashboard |\n| `DOKPLOY_NODE_ENV` | `production` | Node.js environment mode |\n| `DOKPLOY_SECRET_KEY` | (empty) | Session encryption secret — **required** |",
"architecture": "- **dokploy**: Single Node.js container running the complete Dokploy platform — API server, web dashboard, background task runner, and database (internal SQLite, no external DB needed). Self-contained. Optional Docker socket mount enables full container lifecycle management.",
"healthCheck": "```bash\ncurl http://localhost:3000/api/health\n```\n\nFull documentation: [dokploy.com/docs](https://dokploy.com/docs)"
"projectOverview": "[Dokploy](https://github.com/Dokploy/dokploy) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Dokploy in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `dokploy` | `dokploy/dokploy:latest` | Main application service |\n\n### Volumes\n\n| Volume | Mount | Purpose |\n|--------|-------|---------|\n| `dokploy_data` | (varies) | Persistent data storage |\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:3000/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:3000](http://localhost:3000) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `DOKPLOY_PORT` | `3000` | Host port for Dokploy web dashboard (default: 3000) |\n| `DOKPLOY_NODE_ENV` | `production` | Node.js environment mode: production, development |\n| `DOKPLOY_SECRET_KEY` | `—` | Secret key for session encryption (generate a random string) |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 3000 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec dokploy ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v dokploy_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/dokploy-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v dokploy_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/dokploy-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [Dokploy](https://github.com/Dokploy/dokploy)\n- **Docker Image:** `dokploy/dokploy:latest`\n- **Issues:** [GitHub Issues](https://github.com/Dokploy/dokploy/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "[Dokploy](https://dokploy.com/) is an open-source PaaS that lets you deploy and manage applications, databases, and services on your own infrastructure. Think Vercel or Railway, but running on your own servers."
"intro": "Self-hosted deployment platform"
},
{
"id": "dokuwiki",
@@ -4309,15 +4323,16 @@
"portainer"
],
"sections": {
"quickStart": "1. **Clone and configure:**\r\n\r\n ```bash\r\n cp .env.example .env\r\n # Edit .env with your configuration\r\n ```\r\n\r\n2. **Start the service:**\r\n\r\n ```bash\r\n docker compose up -d\r\n ```\r\n\r\n3. **Verify it's running:**\r\n\r\n ```bash\r\n docker compose ps\r\n curl -s http://localhost:8080/ | head -c 200\r\n ```\r\n\r\n4. **Access the application:**\r\n\r\n Open [http://localhost:8080](http://localhost:8080) in your browser.",
"architecture": "| Component | Image | Purpose |\r\n|-----------|-------|---------|\r\n| `drupal` | docker.io/bitnami/drupal:latest | Main application service |\r\n| `drupal_data` | (volume) | Persistent data storage |\r\n\r\nServices communicate over a shared Docker network. Data is persisted in named volumes.",
"configuration": "Environment variables (set in `.env`):\r\n\r\n| Variable | Default | Description |\r\n|----------|---------|-------------|\r\n| `DRUPAL_PORT` | `8080` | Configuration variable |",
"troubleshooting": "**Container won't start:**\r\n```bash\r\ndocker compose logs drupal\r\n```\r\n\r\n**Port conflict:**\r\nEdit `.env` and change `DRUPAL_PORT` to an available port, then restart:\r\n```bash\r\ndocker compose down && docker compose up -d\r\n```\r\n\r\n**Permission errors:**\r\nEnsure the Docker user has write access to the data volume:\r\n```bash\r\ndocker compose exec drupal ls -la /data\r\n```\r\n\r\n**Health check failing:**\r\n```bash\r\ndocker compose ps # Check STATUS column\r\ndocker inspect drupal --format='{{json .State.Health}}'\r\n```",
"backup": "**Backup:**\r\n```bash\r\n# Stop the service\r\ndocker compose down\r\n\r\n# Backup the data volume\r\ndocker run --rm -v drupal_data:/data -v $(pwd):/backup alpine tar czf /backup/drupal-backup-$(date +%Y%m%d).tar.gz /data\r\n\r\n# Restart\r\ndocker compose up -d\r\n```\r\n\r\n**Restore:**\r\n```bash\r\ndocker compose down\r\ndocker run --rm -v drupal_data:/data -v $(pwd):/backup alpine sh -c \"rm -rf /data/* && tar xzf /backup/drupal-backup.tar.gz -C /\"\r\ndocker compose up -d\r\n```",
"links": "- **Docker Image:** `docker.io/bitnami/drupal:latest`",
"prerequisites": "- Docker Engine 20.10+\r\n- Docker Compose v2.0+\r\n- 512MB+ RAM recommended\r\n- 1GB+ free disk space for data storage"
"projectOverview": "[Drupal](https://github.com/drupal/drupal) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Drupal in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `drupal` | `docker.io/bitnami/drupal:latest` | Main application service |\n\n### Volumes\n\n| Volume | Mount | Purpose |\n|--------|-------|---------|\n| `drupal_data` | (varies) | Persistent data storage |\n\n### Health Check\n\nThe container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:8080/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:8080](http://localhost:8080) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `DRUPAL_PORT` | `8080` | Drupal host port (default: 8080) |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 8080 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec drupal ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v drupal_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/drupal-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v drupal_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/drupal-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [Drupal](https://github.com/drupal/drupal)\n- **Docker Image:** `docker.io/bitnami/drupal:latest`\n- **Issues:** [GitHub Issues](https://github.com/drupal/drupal/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "Self-hosted Drupal deployment via Docker\r\n\r\nThis template provides a containerized deployment of [Drupal](drupal) using Docker Compose."
"intro": "Open-source content management framework"
},
{
"id": "dumbbudget",
@@ -4556,15 +4571,16 @@
"portainer"
],
"sections": {
"quickStart": "1. **Clone and configure:**\r\n\r\n ```bash\r\n cp .env.example .env\r\n # Edit .env with your configuration\r\n ```\r\n\r\n2. **Start the service:**\r\n\r\n ```bash\r\n docker compose up -d\r\n ```\r\n\r\n3. **Verify it's running:**\r\n\r\n ```bash\r\n docker compose ps\r\n curl -s http://localhost:9200/ | head -c 200\r\n ```\r\n\r\n4. **Access the application:**\r\n\r\n Open [http://localhost:9200](http://localhost:9200) in your browser.",
"architecture": "| Component | Image | Purpose |\r\n|-----------|-------|---------|\r\n| `elasticsearch` | docker.io/bitnamicharts/elasticsearch:latest | Main application service |\r\n| `elasticsearch_data` | (volume) | Persistent data storage |\r\n\r\nServices communicate over a shared Docker network. Data is persisted in named volumes.",
"configuration": "Environment variables (set in `.env`):\r\n\r\n| Variable | Default | Description |\r\n|----------|---------|-------------|\r\n| `ELASTICSEARCH_PORT` | `9200` | Configuration variable |",
"troubleshooting": "**Container won't start:**\r\n```bash\r\ndocker compose logs elasticsearch\r\n```\r\n\r\n**Port conflict:**\r\nEdit `.env` and change `ELASTICSEARCH_PORT` to an available port, then restart:\r\n```bash\r\ndocker compose down && docker compose up -d\r\n```\r\n\r\n**Permission errors:**\r\nEnsure the Docker user has write access to the data volume:\r\n```bash\r\ndocker compose exec elasticsearch ls -la /data\r\n```\r\n\r\n**Health check failing:**\r\n```bash\r\ndocker compose ps # Check STATUS column\r\ndocker inspect elasticsearch --format='{{json .State.Health}}'\r\n```",
"backup": "**Backup:**\r\n```bash\r\n# Stop the service\r\ndocker compose down\r\n\r\n# Backup the data volume\r\ndocker run --rm -v elasticsearch_data:/data -v $(pwd):/backup alpine tar czf /backup/elasticsearch-backup-$(date +%Y%m%d).tar.gz /data\r\n\r\n# Restart\r\ndocker compose up -d\r\n```\r\n\r\n**Restore:**\r\n```bash\r\ndocker compose down\r\ndocker run --rm -v elasticsearch_data:/data -v $(pwd):/backup alpine sh -c \"rm -rf /data/* && tar xzf /backup/elasticsearch-backup.tar.gz -C /\"\r\ndocker compose up -d\r\n```",
"links": "- **Docker Image:** `docker.io/bitnamicharts/elasticsearch:latest`",
"prerequisites": "- Docker Engine 20.10+\r\n- Docker Compose v2.0+\r\n- 512MB+ RAM recommended\r\n- 1GB+ free disk space for data storage"
"projectOverview": "[Elasticsearch](https://github.com/elastic/elasticsearch) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Elasticsearch in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `elasticsearch` | `docker.io/bitnamicharts/elasticsearch:latest` | Main application service |\n\n### Volumes\n\n| Volume | Mount | Purpose |\n|--------|-------|---------|\n| `elasticsearch_data` | (varies) | Persistent data storage |\n\n### Health Check\n\nThe container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:9200/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:9200](http://localhost:9200) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `ELASTICSEARCH_PORT` | `9200` | Elasticsearch host port (default: 9200) |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 9200 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec elasticsearch ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v elasticsearch_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/elasticsearch-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v elasticsearch_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/elasticsearch-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [Elasticsearch](https://github.com/elastic/elasticsearch)\n- **Docker Image:** `docker.io/bitnamicharts/elasticsearch:latest`\n- **Issues:** [GitHub Issues](https://github.com/elastic/elasticsearch/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "Self-hosted Elasticsearch deployment via Docker\r\n\r\nThis template provides a containerized deployment of [Elasticsearch](elasticsearch) using Docker Compose."
"intro": "Distributed search and analytics engine"
},
{
"id": "elasticsearch7",
@@ -5972,15 +5988,16 @@
"yunohost"
],
"sections": {
"quickStart": "1. **Clone and configure:**\r\n\r\n ```bash\r\n cp .env.example .env\r\n # Edit .env with your configuration\r\n ```\r\n\r\n2. **Start the service:**\r\n\r\n ```bash\r\n docker compose up -d\r\n ```\r\n\r\n3. **Verify it's running:**\r\n\r\n ```bash\r\n docker compose ps\r\n curl -s http://localhost:8080/ | head -c 200\r\n ```\r\n\r\n4. **Access the application:**\r\n\r\n Open [http://localhost:8080](http://localhost:8080) in your browser.",
"architecture": "| Component | Image | Purpose |\r\n|-----------|-------|---------|\r\n| `friendica` | docker.io/library/friendica:latest | Main application service |\r\n| `friendica_data` | (volume) | Persistent data storage |\r\n\r\nServices communicate over a shared Docker network. Data is persisted in named volumes.",
"configuration": "Environment variables (set in `.env`):\r\n\r\n| Variable | Default | Description |\r\n|----------|---------|-------------|\r\n| `FRIENDICA_PORT` | `8080` | Configuration variable |",
"troubleshooting": "**Container won't start:**\r\n```bash\r\ndocker compose logs friendica\r\n```\r\n\r\n**Port conflict:**\r\nEdit `.env` and change `FRIENDICA_PORT` to an available port, then restart:\r\n```bash\r\ndocker compose down && docker compose up -d\r\n```\r\n\r\n**Permission errors:**\r\nEnsure the Docker user has write access to the data volume:\r\n```bash\r\ndocker compose exec friendica ls -la /data\r\n```\r\n\r\n**Health check failing:**\r\n```bash\r\ndocker compose ps # Check STATUS column\r\ndocker inspect friendica --format='{{json .State.Health}}'\r\n```",
"backup": "**Backup:**\r\n```bash\r\n# Stop the service\r\ndocker compose down\r\n\r\n# Backup the data volume\r\ndocker run --rm -v friendica_data:/data -v $(pwd):/backup alpine tar czf /backup/friendica-backup-$(date +%Y%m%d).tar.gz /data\r\n\r\n# Restart\r\ndocker compose up -d\r\n```\r\n\r\n**Restore:**\r\n```bash\r\ndocker compose down\r\ndocker run --rm -v friendica_data:/data -v $(pwd):/backup alpine sh -c \"rm -rf /data/* && tar xzf /backup/friendica-backup.tar.gz -C /\"\r\ndocker compose up -d\r\n```",
"links": "- **Docker Image:** `docker.io/library/friendica:latest`",
"prerequisites": "- Docker Engine 20.10+\r\n- Docker Compose v2.0+\r\n- 512MB+ RAM recommended\r\n- 1GB+ free disk space for data storage"
"projectOverview": "[Friendica](https://github.com/friendica/friendica) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Friendica in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `friendica` | `docker.io/library/friendica:latest` | Main application service |\n\n### Volumes\n\n| Volume | Mount | Purpose |\n|--------|-------|---------|\n| `friendica_data` | (varies) | Persistent data storage |\n\n### Health Check\n\nThe container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:8080/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:8080](http://localhost:8080) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `FRIENDICA_PORT` | `8080` | friendica host port (default: 8080) |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 8080 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec friendica ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v friendica_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/friendica-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v friendica_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/friendica-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [Friendica](https://github.com/friendica/friendica)\n- **Docker Image:** `docker.io/library/friendica:latest`\n- **Issues:** [GitHub Issues](https://github.com/friendica/friendica/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "Self-hosted Friendica deployment via Docker\r\n\r\nThis template provides a containerized deployment of [Friendica](friendica) using Docker Compose."
"intro": "Decentralized social networking platform"
},
{
"id": "frigate",
@@ -6291,15 +6308,16 @@
"umbrel"
],
"sections": {
"quickStart": "1. **Clone and configure:**\r\n\r\n ```bash\r\n cp .env.example .env\r\n # Edit .env with your configuration\r\n ```\r\n\r\n2. **Start the service:**\r\n\r\n ```bash\r\n docker compose up -d\r\n ```\r\n\r\n3. **Verify it's running:**\r\n\r\n ```bash\r\n docker compose ps\r\n curl -s http://localhost:8080/ | head -c 200\r\n ```\r\n\r\n4. **Access the application:**\r\n\r\n Open [http://localhost:8080](http://localhost:8080) in your browser.",
"architecture": "| Component | Image | Purpose |\r\n|-----------|-------|---------|\r\n| `ghost` | docker.io/library/ghost:latest | Main application service |\r\n| `ghost_data` | (volume) | Persistent data storage |\r\n\r\nServices communicate over a shared Docker network. Data is persisted in named volumes.",
"configuration": "Environment variables (set in `.env`):\r\n\r\n| Variable | Default | Description |\r\n|----------|---------|-------------|\r\n| `GHOST_PORT` | `8080` | Configuration variable |",
"troubleshooting": "**Container won't start:**\r\n```bash\r\ndocker compose logs ghost\r\n```\r\n\r\n**Port conflict:**\r\nEdit `.env` and change `GHOST_PORT` to an available port, then restart:\r\n```bash\r\ndocker compose down && docker compose up -d\r\n```\r\n\r\n**Permission errors:**\r\nEnsure the Docker user has write access to the data volume:\r\n```bash\r\ndocker compose exec ghost ls -la /data\r\n```\r\n\r\n**Health check failing:**\r\n```bash\r\ndocker compose ps # Check STATUS column\r\ndocker inspect ghost --format='{{json .State.Health}}'\r\n```",
"backup": "**Backup:**\r\n```bash\r\n# Stop the service\r\ndocker compose down\r\n\r\n# Backup the data volume\r\ndocker run --rm -v ghost_data:/data -v $(pwd):/backup alpine tar czf /backup/ghost-backup-$(date +%Y%m%d).tar.gz /data\r\n\r\n# Restart\r\ndocker compose up -d\r\n```\r\n\r\n**Restore:**\r\n```bash\r\ndocker compose down\r\ndocker run --rm -v ghost_data:/data -v $(pwd):/backup alpine sh -c \"rm -rf /data/* && tar xzf /backup/ghost-backup.tar.gz -C /\"\r\ndocker compose up -d\r\n```",
"links": "- **Docker Image:** `docker.io/library/ghost:latest`",
"prerequisites": "- Docker Engine 20.10+\r\n- Docker Compose v2.0+\r\n- 512MB+ RAM recommended\r\n- 1GB+ free disk space for data storage"
"projectOverview": "[Ghost](https://github.com/TryGhost/Ghost) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Ghost in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `ghost` | `docker.io/library/ghost:latest` | Main application service |\n\n### Volumes\n\n| Volume | Mount | Purpose |\n|--------|-------|---------|\n| `ghost_data` | (varies) | Persistent data storage |\n\n### Health Check\n\nThe container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:8080/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:8080](http://localhost:8080) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `GHOST_PORT` | `8080` | ghost host port (default: 8080) |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 8080 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec ghost ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v ghost_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/ghost-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v ghost_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/ghost-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [Ghost](https://github.com/TryGhost/Ghost)\n- **Docker Image:** `docker.io/library/ghost:latest`\n- **Issues:** [GitHub Issues](https://github.com/TryGhost/Ghost/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "Self-hosted Ghost deployment via Docker\r\n\r\nThis template provides a containerized deployment of [Ghost](ghost) using Docker Compose."
"intro": "Modern publishing platform"
},
{
"id": "ghostfolio",
@@ -6722,15 +6740,16 @@
"portainer"
],
"sections": {
"quickStart": "1. **Clone and configure:**\r\n\r\n ```bash\r\n cp .env.example .env\r\n # Edit .env with your configuration\r\n ```\r\n\r\n2. **Start the service:**\r\n\r\n ```bash\r\n docker compose up -d\r\n ```\r\n\r\n3. **Verify it's running:**\r\n\r\n ```bash\r\n docker compose ps\r\n curl -s http://localhost:3000/ | head -c 200\r\n ```\r\n\r\n4. **Access the application:**\r\n\r\n Open [http://localhost:3000](http://localhost:3000) in your browser.",
"architecture": "| Component | Image | Purpose |\r\n|-----------|-------|---------|\r\n| `grafana` | docker.io/grafana/grafana:latest | Main application service |\r\n| `grafana_data` | (volume) | Persistent data storage |\r\n\r\nServices communicate over a shared Docker network. Data is persisted in named volumes.",
"configuration": "Environment variables (set in `.env`):\r\n\r\n| Variable | Default | Description |\r\n|----------|---------|-------------|\r\n| `GRAFANA_PORT` | `3000` | Configuration variable |",
"troubleshooting": "**Container won't start:**\r\n```bash\r\ndocker compose logs grafana\r\n```\r\n\r\n**Port conflict:**\r\nEdit `.env` and change `GRAFANA_PORT` to an available port, then restart:\r\n```bash\r\ndocker compose down && docker compose up -d\r\n```\r\n\r\n**Permission errors:**\r\nEnsure the Docker user has write access to the data volume:\r\n```bash\r\ndocker compose exec grafana ls -la /data\r\n```\r\n\r\n**Health check failing:**\r\n```bash\r\ndocker compose ps # Check STATUS column\r\ndocker inspect grafana --format='{{json .State.Health}}'\r\n```",
"backup": "**Backup:**\r\n```bash\r\n# Stop the service\r\ndocker compose down\r\n\r\n# Backup the data volume\r\ndocker run --rm -v grafana_data:/data -v $(pwd):/backup alpine tar czf /backup/grafana-backup-$(date +%Y%m%d).tar.gz /data\r\n\r\n# Restart\r\ndocker compose up -d\r\n```\r\n\r\n**Restore:**\r\n```bash\r\ndocker compose down\r\ndocker run --rm -v grafana_data:/data -v $(pwd):/backup alpine sh -c \"rm -rf /data/* && tar xzf /backup/grafana-backup.tar.gz -C /\"\r\ndocker compose up -d\r\n```",
"links": "- **Docker Image:** `docker.io/grafana/grafana:latest`",
"prerequisites": "- Docker Engine 20.10+\r\n- Docker Compose v2.0+\r\n- 512MB+ RAM recommended\r\n- 1GB+ free disk space for data storage"
"projectOverview": "[Grafana](https://github.com/grafana/grafana) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Grafana in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `grafana` | `docker.io/grafana/grafana:latest` | Main application service |\n\n### Volumes\n\n| Volume | Mount | Purpose |\n|--------|-------|---------|\n| `grafana_data` | (varies) | Persistent data storage |\n\n### Health Check\n\nThe container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:3000/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:3000](http://localhost:3000) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `GRAFANA_PORT` | `3000` | Grafana host port (default: 3000) |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 3000 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec grafana ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v grafana_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/grafana-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v grafana_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/grafana-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [Grafana](https://github.com/grafana/grafana)\n- **Docker Image:** `docker.io/grafana/grafana:latest`\n- **Issues:** [GitHub Issues](https://github.com/grafana/grafana/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "Self-hosted Grafana deployment via Docker\r\n\r\nThis template provides a containerized deployment of [Grafana](grafana) using Docker Compose."
"intro": "Open-source analytics and monitoring platform"
},
{
"id": "grav",
@@ -6938,12 +6957,16 @@
"paas"
],
"sections": {
"quickStart": "1. **Start the service:**\n\n ```bash\n docker compose up -d\n ```\n\n2. **Access the dashboard** at [http://localhost:3000](http://localhost:3000)\n\n3. **Log in** with the admin password from your `.env` file (default: `changeme`).\n\n4. **Enable Docker-in-Docker** by uncommenting the `/var/run/docker.sock` mount in `docker-compose.yml` — required for pipeline execution.",
"configuration": "Copy `.env.example` to `.env` and edit:\n\n| Variable | Default | Description |\n|-------------------------|--------------|-----------------------------------------------|\n| `HARNESS_WEB_PORT` | `3000` | Host port for the web dashboard |\n| `HARNESS_SSH_PORT` | `3022` | Host port for SSH-based deployments |\n| `HARNESS_MODE` | `standalone` | Deployment mode (standalone or cluster) |\n| `HARNESS_ADMIN_PASSWORD`| `changeme` | Admin password — **change for production** |",
"architecture": "- **harness**: Single Docker container running the complete Harness platform — manager, delegate, pipeline engine, and web UI. Self-contained; no external DB required for standalone mode. Optional Docker socket mount enables pipeline execution on the host.",
"healthCheck": "```bash\ncurl http://localhost:3000/api/health\n```\n\nFull documentation: [developer.harness.io](https://developer.harness.io/docs/self-managed-enterprise-edition)"
"projectOverview": "[Harness](https://github.com/harness/harness) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Harness in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `harness` | `harness/harness:latest` | Main application service |\n\n### Volumes\n\n| Volume | Mount | Purpose |\n|--------|-------|---------|\n| `harness_data` | (varies) | Persistent data storage |\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:3000/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:3000](http://localhost:3000) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `HARNESS_WEB_PORT` | `3000` | Host port for Harness web UI (default: 3000) |\n| `HARNESS_SSH_PORT` | `3022` | Host port for Harness SSH service (default: 3022) |\n| `HARNESS_MODE` | `standalone` | Deployment mode: standalone (single-node) or cluster (multi-node) |\n| `HARNESS_ADMIN_PASSWORD` | `changeme` | Admin password for the web dashboard (change this!) |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 3000 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec harness ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v harness_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/harness-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v harness_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/harness-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [Harness](https://github.com/harness/harness)\n- **Docker Image:** `harness/harness:latest`\n- **Issues:** [GitHub Issues](https://github.com/harness/harness/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "[Harness](https://www.harness.io/) is a modern CI/CD platform that automates the full software delivery pipeline — from code commit through build, test, deploy, and infrastructure provisioning. This is the self-hosted community edition."
"intro": "AI-native software delivery platform"
},
{
"id": "haystack",
@@ -8140,15 +8163,16 @@
"portainer"
],
"sections": {
"quickStart": "1. **Clone and configure:**\r\n\r\n ```bash\r\n cp .env.example .env\r\n # Edit .env with your configuration\r\n ```\r\n\r\n2. **Start the service:**\r\n\r\n ```bash\r\n docker compose up -d\r\n ```\r\n\r\n3. **Verify it's running:**\r\n\r\n ```bash\r\n docker compose ps\r\n curl -s http://localhost:8080/ | head -c 200\r\n ```\r\n\r\n4. **Access the application:**\r\n\r\n Open [http://localhost:8080](http://localhost:8080) in your browser.",
"architecture": "| Component | Image | Purpose |\r\n|-----------|-------|---------|\r\n| `joomla` | docker.io/amd64/joomla:latest | Main application service |\r\n| `joomla_data` | (volume) | Persistent data storage |\r\n\r\nServices communicate over a shared Docker network. Data is persisted in named volumes.",
"configuration": "Environment variables (set in `.env`):\r\n\r\n| Variable | Default | Description |\r\n|----------|---------|-------------|\r\n| `JOOMLA_PORT` | `8080` | Configuration variable |",
"troubleshooting": "**Container won't start:**\r\n```bash\r\ndocker compose logs joomla\r\n```\r\n\r\n**Port conflict:**\r\nEdit `.env` and change `JOOMLA_PORT` to an available port, then restart:\r\n```bash\r\ndocker compose down && docker compose up -d\r\n```\r\n\r\n**Permission errors:**\r\nEnsure the Docker user has write access to the data volume:\r\n```bash\r\ndocker compose exec joomla ls -la /data\r\n```\r\n\r\n**Health check failing:**\r\n```bash\r\ndocker compose ps # Check STATUS column\r\ndocker inspect joomla --format='{{json .State.Health}}'\r\n```",
"backup": "**Backup:**\r\n```bash\r\n# Stop the service\r\ndocker compose down\r\n\r\n# Backup the data volume\r\ndocker run --rm -v joomla_data:/data -v $(pwd):/backup alpine tar czf /backup/joomla-backup-$(date +%Y%m%d).tar.gz /data\r\n\r\n# Restart\r\ndocker compose up -d\r\n```\r\n\r\n**Restore:**\r\n```bash\r\ndocker compose down\r\ndocker run --rm -v joomla_data:/data -v $(pwd):/backup alpine sh -c \"rm -rf /data/* && tar xzf /backup/joomla-backup.tar.gz -C /\"\r\ndocker compose up -d\r\n```",
"links": "- **Docker Image:** `docker.io/amd64/joomla:latest`",
"prerequisites": "- Docker Engine 20.10+\r\n- Docker Compose v2.0+\r\n- 512MB+ RAM recommended\r\n- 1GB+ free disk space for data storage"
"projectOverview": "[Joomla](https://github.com/joomla/joomla-cms) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Joomla in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `joomla` | `docker.io/amd64/joomla:latest` | Main application service |\n\n### Volumes\n\n| Volume | Mount | Purpose |\n|--------|-------|---------|\n| `joomla_data` | (varies) | Persistent data storage |\n\n### Health Check\n\nThe container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:8080/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:8080](http://localhost:8080) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `JOOMLA_PORT` | `8080` | Joomla host port (default: 8080) |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 8080 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec joomla ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v joomla_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/joomla-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v joomla_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/joomla-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [Joomla](https://github.com/joomla/joomla-cms)\n- **Docker Image:** `docker.io/amd64/joomla:latest`\n- **Issues:** [GitHub Issues](https://github.com/joomla/joomla-cms/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "Self-hosted Joomla deployment via Docker\r\n\r\nThis template provides a containerized deployment of [Joomla](joomla) using Docker Compose."
"intro": "Award-winning CMS"
},
{
"id": "joplin",
@@ -10222,15 +10246,16 @@
"portainer"
],
"sections": {
"quickStart": "1. **Clone and configure:**\r\n\r\n ```bash\r\n cp .env.example .env\r\n # Edit .env with your configuration\r\n ```\r\n\r\n2. **Start the service:**\r\n\r\n ```bash\r\n docker compose up -d\r\n ```\r\n\r\n3. **Verify it's running:**\r\n\r\n ```bash\r\n docker compose ps\r\n curl -s http://localhost:8080/ | head -c 200\r\n ```\r\n\r\n4. **Access the application:**\r\n\r\n Open [http://localhost:8080](http://localhost:8080) in your browser.",
"architecture": "| Component | Image | Purpose |\r\n|-----------|-------|---------|\r\n| `matomo` | docker.io/library/matomo:latest | Main application service |\r\n| `matomo_data` | (volume) | Persistent data storage |\r\n\r\nServices communicate over a shared Docker network. Data is persisted in named volumes.",
"configuration": "Environment variables (set in `.env`):\r\n\r\n| Variable | Default | Description |\r\n|----------|---------|-------------|\r\n| `MATOMO_PORT` | `8080` | Configuration variable |",
"troubleshooting": "**Container won't start:**\r\n```bash\r\ndocker compose logs matomo\r\n```\r\n\r\n**Port conflict:**\r\nEdit `.env` and change `MATOMO_PORT` to an available port, then restart:\r\n```bash\r\ndocker compose down && docker compose up -d\r\n```\r\n\r\n**Permission errors:**\r\nEnsure the Docker user has write access to the data volume:\r\n```bash\r\ndocker compose exec matomo ls -la /data\r\n```\r\n\r\n**Health check failing:**\r\n```bash\r\ndocker compose ps # Check STATUS column\r\ndocker inspect matomo --format='{{json .State.Health}}'\r\n```",
"backup": "**Backup:**\r\n```bash\r\n# Stop the service\r\ndocker compose down\r\n\r\n# Backup the data volume\r\ndocker run --rm -v matomo_data:/data -v $(pwd):/backup alpine tar czf /backup/matomo-backup-$(date +%Y%m%d).tar.gz /data\r\n\r\n# Restart\r\ndocker compose up -d\r\n```\r\n\r\n**Restore:**\r\n```bash\r\ndocker compose down\r\ndocker run --rm -v matomo_data:/data -v $(pwd):/backup alpine sh -c \"rm -rf /data/* && tar xzf /backup/matomo-backup.tar.gz -C /\"\r\ndocker compose up -d\r\n```",
"links": "- **Docker Image:** `docker.io/library/matomo:latest`",
"prerequisites": "- Docker Engine 20.10+\r\n- Docker Compose v2.0+\r\n- 512MB+ RAM recommended\r\n- 1GB+ free disk space for data storage"
"projectOverview": "[Matomo](https://github.com/matomo-org/matomo) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Matomo in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `matomo` | `docker.io/library/matomo:latest` | Main application service |\n\n### Volumes\n\n| Volume | Mount | Purpose |\n|--------|-------|---------|\n| `matomo_data` | (varies) | Persistent data storage |\n\n### Health Check\n\nThe container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:8080/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:8080](http://localhost:8080) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `MATOMO_PORT` | `8080` | Matomo host port (default: 8080) |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 8080 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec matomo ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v matomo_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/matomo-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v matomo_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/matomo-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [Matomo](https://github.com/matomo-org/matomo)\n- **Docker Image:** `docker.io/library/matomo:latest`\n- **Issues:** [GitHub Issues](https://github.com/matomo-org/matomo/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "Self-hosted Matomo deployment via Docker\r\n\r\nThis template provides a containerized deployment of [Matomo](matomo) using Docker Compose."
"intro": "Privacy-friendly web analytics"
},
{
"id": "matrix-appservice-irc",
@@ -10370,15 +10395,16 @@
"yunohost"
],
"sections": {
"quickStart": "1. **Clone and configure:**\r\n\r\n ```bash\r\n cp .env.example .env\r\n # Edit .env with your configuration\r\n ```\r\n\r\n2. **Start the service:**\r\n\r\n ```bash\r\n docker compose up -d\r\n ```\r\n\r\n3. **Verify it's running:**\r\n\r\n ```bash\r\n docker compose ps\r\n curl -s http://localhost:80/ | head -c 200\r\n ```\r\n\r\n4. **Access the application:**\r\n\r\n Open [http://localhost:80](http://localhost:80) in your browser.",
"architecture": "| Component | Image | Purpose |\r\n|-----------|-------|---------|\r\n| `mediawiki` | docker.io/library/mediawiki:latest | Main application service |\r\n| `mediawiki_data` | (volume) | Persistent data storage |\r\n\r\nServices communicate over a shared Docker network. Data is persisted in named volumes.",
"configuration": "Environment variables (set in `.env`):\r\n\r\n| Variable | Default | Description |\r\n|----------|---------|-------------|\r\n| `MEDIAWIKI_PORT` | `80` | Configuration variable |",
"troubleshooting": "**Container won't start:**\r\n```bash\r\ndocker compose logs mediawiki\r\n```\r\n\r\n**Port conflict:**\r\nEdit `.env` and change `MEDIAWIKI_PORT` to an available port, then restart:\r\n```bash\r\ndocker compose down && docker compose up -d\r\n```\r\n\r\n**Permission errors:**\r\nEnsure the Docker user has write access to the data volume:\r\n```bash\r\ndocker compose exec mediawiki ls -la /data\r\n```\r\n\r\n**Health check failing:**\r\n```bash\r\ndocker compose ps # Check STATUS column\r\ndocker inspect mediawiki --format='{{json .State.Health}}'\r\n```",
"backup": "**Backup:**\r\n```bash\r\n# Stop the service\r\ndocker compose down\r\n\r\n# Backup the data volume\r\ndocker run --rm -v mediawiki_data:/data -v $(pwd):/backup alpine tar czf /backup/mediawiki-backup-$(date +%Y%m%d).tar.gz /data\r\n\r\n# Restart\r\ndocker compose up -d\r\n```\r\n\r\n**Restore:**\r\n```bash\r\ndocker compose down\r\ndocker run --rm -v mediawiki_data:/data -v $(pwd):/backup alpine sh -c \"rm -rf /data/* && tar xzf /backup/mediawiki-backup.tar.gz -C /\"\r\ndocker compose up -d\r\n```",
"links": "- **Docker Image:** `docker.io/library/mediawiki:latest`",
"prerequisites": "- Docker Engine 20.10+\r\n- Docker Compose v2.0+\r\n- 512MB+ RAM recommended\r\n- 1GB+ free disk space for data storage"
"projectOverview": "[Mediawiki](https://github.com/wikimedia/mediawiki) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Mediawiki in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `mediawiki` | `docker.io/library/mediawiki:latest` | Main application service |\n\n### Volumes\n\n| Volume | Mount | Purpose |\n|--------|-------|---------|\n| `mediawiki_data` | (varies) | Persistent data storage |\n\n### Health Check\n\nThe container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:80/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:80](http://localhost:80) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `MEDIAWIKI_PORT` | `80` | mediawiki host port (default: 80) |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 80 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec mediawiki ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v mediawiki_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/mediawiki-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v mediawiki_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/mediawiki-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [Mediawiki](https://github.com/wikimedia/mediawiki)\n- **Docker Image:** `docker.io/library/mediawiki:latest`\n- **Issues:** [GitHub Issues](https://github.com/wikimedia/mediawiki/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "Self-hosted Mediawiki deployment via Docker\r\n\r\nThis template provides a containerized deployment of [Mediawiki](mediawiki) using Docker Compose."
"intro": "Collaborative wiki platform"
},
{
"id": "meetily",
@@ -10847,15 +10873,16 @@
"portainer"
],
"sections": {
"quickStart": "1. **Clone and configure:**\r\n\r\n ```bash\r\n cp .env.example .env\r\n # Edit .env with your configuration\r\n ```\r\n\r\n2. **Start the service:**\r\n\r\n ```bash\r\n docker compose up -d\r\n ```\r\n\r\n3. **Verify it's running:**\r\n\r\n ```bash\r\n docker compose ps\r\n curl -s http://localhost:9000/ | head -c 200\r\n ```\r\n\r\n4. **Access the application:**\r\n\r\n Open [http://localhost:9000](http://localhost:9000) in your browser.",
"architecture": "| Component | Image | Purpose |\r\n|-----------|-------|---------|\r\n| `minio` | docker.io/minio/minio:latest | Main application service |\r\n| `minio_data` | (volume) | Persistent data storage |\r\n\r\nServices communicate over a shared Docker network. Data is persisted in named volumes.",
"configuration": "Environment variables (set in `.env`):\r\n\r\n| Variable | Default | Description |\r\n|----------|---------|-------------|\r\n| `MINIO_PORT` | `9000` | Configuration variable |",
"troubleshooting": "**Container won't start:**\r\n```bash\r\ndocker compose logs minio\r\n```\r\n\r\n**Port conflict:**\r\nEdit `.env` and change `MINIO_PORT` to an available port, then restart:\r\n```bash\r\ndocker compose down && docker compose up -d\r\n```\r\n\r\n**Permission errors:**\r\nEnsure the Docker user has write access to the data volume:\r\n```bash\r\ndocker compose exec minio ls -la /data\r\n```\r\n\r\n**Health check failing:**\r\n```bash\r\ndocker compose ps # Check STATUS column\r\ndocker inspect minio --format='{{json .State.Health}}'\r\n```",
"backup": "**Backup:**\r\n```bash\r\n# Stop the service\r\ndocker compose down\r\n\r\n# Backup the data volume\r\ndocker run --rm -v minio_data:/data -v $(pwd):/backup alpine tar czf /backup/minio-backup-$(date +%Y%m%d).tar.gz /data\r\n\r\n# Restart\r\ndocker compose up -d\r\n```\r\n\r\n**Restore:**\r\n```bash\r\ndocker compose down\r\ndocker run --rm -v minio_data:/data -v $(pwd):/backup alpine sh -c \"rm -rf /data/* && tar xzf /backup/minio-backup.tar.gz -C /\"\r\ndocker compose up -d\r\n```",
"links": "- **Docker Image:** `docker.io/minio/minio:latest`",
"prerequisites": "- Docker Engine 20.10+\r\n- Docker Compose v2.0+\r\n- 512MB+ RAM recommended\r\n- 1GB+ free disk space for data storage"
"projectOverview": "[Minio](https://github.com/minio/minio) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Minio in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `minio` | `docker.io/minio/minio:latest` | Main application service |\n\n### Volumes\n\n| Volume | Mount | Purpose |\n|--------|-------|---------|\n| `minio_data` | (varies) | Persistent data storage |\n\n### Health Check\n\nThe container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:9000/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:9000](http://localhost:9000) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `MINIO_PORT` | `9000` | MinIO host port (default: 9000) |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 9000 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec minio ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v minio_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/minio-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v minio_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/minio-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [Minio](https://github.com/minio/minio)\n- **Docker Image:** `docker.io/minio/minio:latest`\n- **Issues:** [GitHub Issues](https://github.com/minio/minio/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "Self-hosted Minio deployment via Docker\r\n\r\nThis template provides a containerized deployment of [Minio](minio) using Docker Compose."
"intro": "S3-compatible object storage"
},
{
"id": "minisatip",
@@ -11112,15 +11139,16 @@
"portainer"
],
"sections": {
"quickStart": "1. **Clone and configure:**\r\n\r\n ```bash\r\n cp .env.example .env\r\n # Edit .env with your configuration\r\n ```\r\n\r\n2. **Start the service:**\r\n\r\n ```bash\r\n docker compose up -d\r\n ```\r\n\r\n3. **Verify it's running:**\r\n\r\n ```bash\r\n docker compose ps\r\n curl -s http://localhost:8080/ | head -c 200\r\n ```\r\n\r\n4. **Access the application:**\r\n\r\n Open [http://localhost:8080](http://localhost:8080) in your browser.",
"architecture": "| Component | Image | Purpose |\r\n|-----------|-------|---------|\r\n| `monica` | docker.io/library/monica:latest | Main application service |\r\n| `monica_data` | (volume) | Persistent data storage |\r\n\r\nServices communicate over a shared Docker network. Data is persisted in named volumes.",
"configuration": "Environment variables (set in `.env`):\r\n\r\n| Variable | Default | Description |\r\n|----------|---------|-------------|\r\n| `MONICA_PORT` | `8080` | Configuration variable |",
"troubleshooting": "**Container won't start:**\r\n```bash\r\ndocker compose logs monica\r\n```\r\n\r\n**Port conflict:**\r\nEdit `.env` and change `MONICA_PORT` to an available port, then restart:\r\n```bash\r\ndocker compose down && docker compose up -d\r\n```\r\n\r\n**Permission errors:**\r\nEnsure the Docker user has write access to the data volume:\r\n```bash\r\ndocker compose exec monica ls -la /data\r\n```\r\n\r\n**Health check failing:**\r\n```bash\r\ndocker compose ps # Check STATUS column\r\ndocker inspect monica --format='{{json .State.Health}}'\r\n```",
"backup": "**Backup:**\r\n```bash\r\n# Stop the service\r\ndocker compose down\r\n\r\n# Backup the data volume\r\ndocker run --rm -v monica_data:/data -v $(pwd):/backup alpine tar czf /backup/monica-backup-$(date +%Y%m%d).tar.gz /data\r\n\r\n# Restart\r\ndocker compose up -d\r\n```\r\n\r\n**Restore:**\r\n```bash\r\ndocker compose down\r\ndocker run --rm -v monica_data:/data -v $(pwd):/backup alpine sh -c \"rm -rf /data/* && tar xzf /backup/monica-backup.tar.gz -C /\"\r\ndocker compose up -d\r\n```",
"links": "- **Docker Image:** `docker.io/library/monica:latest`",
"prerequisites": "- Docker Engine 20.10+\r\n- Docker Compose v2.0+\r\n- 512MB+ RAM recommended\r\n- 1GB+ free disk space for data storage"
"projectOverview": "[Monica](https://github.com/monicahq/monica) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Monica in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `monica` | `docker.io/library/monica:latest` | Main application service |\n\n### Volumes\n\n| Volume | Mount | Purpose |\n|--------|-------|---------|\n| `monica_data` | (varies) | Persistent data storage |\n\n### Health Check\n\nThe container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:8080/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:8080](http://localhost:8080) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `MONICA_PORT` | `8080` | Monica host port (default: 8080) |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 8080 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec monica ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v monica_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/monica-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v monica_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/monica-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [Monica](https://github.com/monicahq/monica)\n- **Docker Image:** `docker.io/library/monica:latest`\n- **Issues:** [GitHub Issues](https://github.com/monicahq/monica/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "Self-hosted Monica deployment via Docker\r\n\r\nThis template provides a containerized deployment of [Monica](monica) using Docker Compose."
"intro": "Personal relationship manager"
},
{
"id": "moodle",
@@ -11720,15 +11748,16 @@
"umbrel"
],
"sections": {
"quickStart": "1. **Clone and configure:**\r\n\r\n ```bash\r\n cp .env.example .env\r\n # Edit .env with your configuration\r\n ```\r\n\r\n2. **Start the service:**\r\n\r\n ```bash\r\n docker compose up -d\r\n ```\r\n\r\n3. **Verify it's running:**\r\n\r\n ```bash\r\n docker compose ps\r\n curl -s http://localhost:80/ | head -c 200\r\n ```\r\n\r\n4. **Access the application:**\r\n\r\n Open [http://localhost:80](http://localhost:80) in your browser.",
"architecture": "| Component | Image | Purpose |\r\n|-----------|-------|---------|\r\n| `nextcloud` | docker.io/library/nextcloud:latest | Main application service |\r\n| `nextcloud_data` | (volume) | Persistent data storage |\r\n\r\nServices communicate over a shared Docker network. Data is persisted in named volumes.",
"configuration": "Environment variables (set in `.env`):\r\n\r\n| Variable | Default | Description |\r\n|----------|---------|-------------|\r\n| `NEXTCLOUD_PORT` | `80` | Configuration variable |",
"troubleshooting": "**Container won't start:**\r\n```bash\r\ndocker compose logs nextcloud\r\n```\r\n\r\n**Port conflict:**\r\nEdit `.env` and change `NEXTCLOUD_PORT` to an available port, then restart:\r\n```bash\r\ndocker compose down && docker compose up -d\r\n```\r\n\r\n**Permission errors:**\r\nEnsure the Docker user has write access to the data volume:\r\n```bash\r\ndocker compose exec nextcloud ls -la /data\r\n```\r\n\r\n**Health check failing:**\r\n```bash\r\ndocker compose ps # Check STATUS column\r\ndocker inspect nextcloud --format='{{json .State.Health}}'\r\n```",
"backup": "**Backup:**\r\n```bash\r\n# Stop the service\r\ndocker compose down\r\n\r\n# Backup the data volume\r\ndocker run --rm -v nextcloud_data:/data -v $(pwd):/backup alpine tar czf /backup/nextcloud-backup-$(date +%Y%m%d).tar.gz /data\r\n\r\n# Restart\r\ndocker compose up -d\r\n```\r\n\r\n**Restore:**\r\n```bash\r\ndocker compose down\r\ndocker run --rm -v nextcloud_data:/data -v $(pwd):/backup alpine sh -c \"rm -rf /data/* && tar xzf /backup/nextcloud-backup.tar.gz -C /\"\r\ndocker compose up -d\r\n```",
"links": "- **Docker Image:** `docker.io/library/nextcloud:latest`",
"prerequisites": "- Docker Engine 20.10+\r\n- Docker Compose v2.0+\r\n- 512MB+ RAM recommended\r\n- 1GB+ free disk space for data storage"
"projectOverview": "[Nextcloud](https://github.com/nextcloud/server) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Nextcloud in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `nextcloud` | `docker.io/library/nextcloud:latest` | Main application service |\n\n### Volumes\n\n| Volume | Mount | Purpose |\n|--------|-------|---------|\n| `nextcloud_data` | (varies) | Persistent data storage |\n\n### Health Check\n\nThe container runs a health check every 30s (3 retries, 60s start period). Docker will report the container as unhealthy if the endpoint fails consistently.\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:80/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:80](http://localhost:80) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `NEXTCLOUD_PORT` | `80` | nextcloud host port (default: 80) |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 80 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec nextcloud ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v nextcloud_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/nextcloud-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v nextcloud_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/nextcloud-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [Nextcloud](https://github.com/nextcloud/server)\n- **Docker Image:** `docker.io/library/nextcloud:latest`\n- **Issues:** [GitHub Issues](https://github.com/nextcloud/server/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "Self-hosted content collaboration platform with file sync, calendar, contacts, and extensive app ecosystem\r\n\r\nThis template provides a containerized deployment of [Nextcloud](nextcloud) using Docker Compose."
"intro": "Self-hosted productivity platform"
},
{
"id": "nexterm",
@@ -11770,15 +11799,16 @@
"portainer"
],
"sections": {
"quickStart": "1. **Clone and configure:**\r\n\r\n ```bash\r\n cp .env.example .env\r\n # Edit .env with your configuration\r\n ```\r\n\r\n2. **Start the service:**\r\n\r\n ```bash\r\n docker compose up -d\r\n ```\r\n\r\n3. **Verify it's running:**\r\n\r\n ```bash\r\n docker compose ps\r\n curl -s http://localhost:8080/ | head -c 200\r\n ```\r\n\r\n4. **Access the application:**\r\n\r\n Open [http://localhost:8080](http://localhost:8080) in your browser.",
"architecture": "| Component | Image | Purpose |\r\n|-----------|-------|---------|\r\n| `nginx` | docker.io/library/nginx:latest | Main application service |\r\n| `nginx_data` | (volume) | Persistent data storage |\r\n\r\nServices communicate over a shared Docker network. Data is persisted in named volumes.",
"configuration": "Environment variables (set in `.env`):\r\n\r\n| Variable | Default | Description |\r\n|----------|---------|-------------|\r\n| `NGINX_PORT` | `8080` | Configuration variable |",
"troubleshooting": "**Container won't start:**\r\n```bash\r\ndocker compose logs nginx\r\n```\r\n\r\n**Port conflict:**\r\nEdit `.env` and change `NGINX_PORT` to an available port, then restart:\r\n```bash\r\ndocker compose down && docker compose up -d\r\n```\r\n\r\n**Permission errors:**\r\nEnsure the Docker user has write access to the data volume:\r\n```bash\r\ndocker compose exec nginx ls -la /data\r\n```\r\n\r\n**Health check failing:**\r\n```bash\r\ndocker compose ps # Check STATUS column\r\ndocker inspect nginx --format='{{json .State.Health}}'\r\n```",
"backup": "**Backup:**\r\n```bash\r\n# Stop the service\r\ndocker compose down\r\n\r\n# Backup the data volume\r\ndocker run --rm -v nginx_data:/data -v $(pwd):/backup alpine tar czf /backup/nginx-backup-$(date +%Y%m%d).tar.gz /data\r\n\r\n# Restart\r\ndocker compose up -d\r\n```\r\n\r\n**Restore:**\r\n```bash\r\ndocker compose down\r\ndocker run --rm -v nginx_data:/data -v $(pwd):/backup alpine sh -c \"rm -rf /data/* && tar xzf /backup/nginx-backup.tar.gz -C /\"\r\ndocker compose up -d\r\n```",
"links": "- **Docker Image:** `docker.io/library/nginx:latest`",
"prerequisites": "- Docker Engine 20.10+\r\n- Docker Compose v2.0+\r\n- 512MB+ RAM recommended\r\n- 1GB+ free disk space for data storage"
"projectOverview": "[Nginx](https://github.com/nginx/nginx) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Nginx in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `nginx` | `docker.io/library/nginx:latest` | Reverse proxy / web server |\n\n### Volumes\n\n| Volume | Mount | Purpose |\n|--------|-------|---------|\n| `nginx_data` | (varies) | Persistent data storage |\n\n### Health Check\n\nThe container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:8080/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:8080](http://localhost:8080) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `NGINX_PORT` | `8080` | Nginx host port (default: 8080) |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 8080 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec nginx ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v nginx_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/nginx-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v nginx_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/nginx-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [Nginx](https://github.com/nginx/nginx)\n- **Docker Image:** `docker.io/library/nginx:latest`\n- **Issues:** [GitHub Issues](https://github.com/nginx/nginx/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "Self-hosted Nginx deployment via Docker\r\n\r\nThis template provides a containerized deployment of [Nginx](nginx) using Docker Compose."
"intro": "High-performance HTTP server and reverse proxy"
},
{
"id": "nginx-proxy-manager",
@@ -13383,12 +13413,16 @@
"monitoring"
],
"sections": {
"quickStart": "1. **Start the service:**\n\n ```bash\n docker compose up -d\n ```\n\n2. **Access the dashboard** at [http://localhost:8000](http://localhost:8000)\n\n3. **Log in** with the credentials from your `.env` file (default: `admin` / `changeme`).\n\n4. **Send logs** using the built-in ingestion API, Fluent Bit, Vector, or any OpenTelemetry-compatible agent.",
"configuration": "Copy `.env.example` to `.env` and edit:\n\n| Variable | Default | Description |\n|-----------------------|------------|-----------------------------------------------|\n| `PARSEABLE_PORT` | `8000` | Host port for the web UI and API |\n| `PARSEABLE_USERNAME` | `admin` | Admin username for the dashboard |\n| `PARSEABLE_PASSWORD` | `changeme` | Admin password — **change for production** |",
"architecture": "- **parseable**: Single-binary log engine — ingests logs, indexes them in real time, stores data on S3-compatible or local storage, and serves the query API and dashboard.",
"healthCheck": "```bash\ncurl http://localhost:8000/api/v1/liveness\n```\n\nFull documentation: [parseable.io/docs](https://www.parseable.io/docs/introduction)"
"projectOverview": "[Parseable](https://github.com/parseablehq/parseable) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Parseable in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `parseable` | `parseable/parseable:latest` | Main application service |\n\n### Volumes\n\n| Volume | Mount | Purpose |\n|--------|-------|---------|\n| `parseable_data` | (varies) | Persistent data storage |\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:8000/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:8000](http://localhost:8000) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `PARSEABLE_PORT` | `8000` | Host port for Parseable UI and API (default: 8000) |\n| `PARSEABLE_USERNAME` | `admin` | Admin username |\n| `PARSEABLE_PASSWORD` | `changeme` | Admin password (change this!) |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 8000 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec parseable ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v parseable_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/parseable-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v parseable_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/parseable-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [Parseable](https://github.com/parseablehq/parseable)\n- **Docker Image:** `parseable/parseable:latest`\n- **Issues:** [GitHub Issues](https://github.com/parseablehq/parseable/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "[Parseable](https://www.parseable.io/) is a high-performance, cloud-native log observability engine. It ingests, stores, and indexes logs using an S3-compatible object store backend, giving you petabyte-scale log management without managing Elasticsearch clusters."
"intro": "Observability platform for logs"
},
{
"id": "passbolt",
@@ -13798,15 +13832,16 @@
"yunohost"
],
"sections": {
"quickStart": "1. **Clone and configure:**\r\n\r\n ```bash\r\n cp .env.example .env\r\n # Edit .env with your configuration\r\n ```\r\n\r\n2. **Start the service:**\r\n\r\n ```bash\r\n docker compose up -d\r\n ```\r\n\r\n3. **Verify it's running:**\r\n\r\n ```bash\r\n docker compose ps\r\n curl -s http://localhost:8080/ | head -c 200\r\n ```\r\n\r\n4. **Access the application:**\r\n\r\n Open [http://localhost:8080](http://localhost:8080) in your browser.",
"architecture": "| Component | Image | Purpose |\r\n|-----------|-------|---------|\r\n| `phpmyadmin` | docker.io/library/phpmyadmin:latest | Main application service |\r\n| `phpmyadmin_data` | (volume) | Persistent data storage |\r\n\r\nServices communicate over a shared Docker network. Data is persisted in named volumes.",
"configuration": "Environment variables (set in `.env`):\r\n\r\n| Variable | Default | Description |\r\n|----------|---------|-------------|\r\n| `PHPMYADMIN_PORT` | `8080` | Configuration variable |",
"troubleshooting": "**Container won't start:**\r\n```bash\r\ndocker compose logs phpmyadmin\r\n```\r\n\r\n**Port conflict:**\r\nEdit `.env` and change `PHPMYADMIN_PORT` to an available port, then restart:\r\n```bash\r\ndocker compose down && docker compose up -d\r\n```\r\n\r\n**Permission errors:**\r\nEnsure the Docker user has write access to the data volume:\r\n```bash\r\ndocker compose exec phpmyadmin ls -la /data\r\n```\r\n\r\n**Health check failing:**\r\n```bash\r\ndocker compose ps # Check STATUS column\r\ndocker inspect phpmyadmin --format='{{json .State.Health}}'\r\n```",
"backup": "**Backup:**\r\n```bash\r\n# Stop the service\r\ndocker compose down\r\n\r\n# Backup the data volume\r\ndocker run --rm -v phpmyadmin_data:/data -v $(pwd):/backup alpine tar czf /backup/phpmyadmin-backup-$(date +%Y%m%d).tar.gz /data\r\n\r\n# Restart\r\ndocker compose up -d\r\n```\r\n\r\n**Restore:**\r\n```bash\r\ndocker compose down\r\ndocker run --rm -v phpmyadmin_data:/data -v $(pwd):/backup alpine sh -c \"rm -rf /data/* && tar xzf /backup/phpmyadmin-backup.tar.gz -C /\"\r\ndocker compose up -d\r\n```",
"links": "- **Docker Image:** `docker.io/library/phpmyadmin:latest`",
"prerequisites": "- Docker Engine 20.10+\r\n- Docker Compose v2.0+\r\n- 512MB+ RAM recommended\r\n- 1GB+ free disk space for data storage"
"projectOverview": "[Phpmyadmin](https://github.com/phpmyadmin/phpmyadmin) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Phpmyadmin in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `phpmyadmin` | `docker.io/library/phpmyadmin:latest` | Main application service |\n\n### Volumes\n\n| Volume | Mount | Purpose |\n|--------|-------|---------|\n| `phpmyadmin_data` | (varies) | Persistent data storage |\n\n### Health Check\n\nThe container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:8080/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:8080](http://localhost:8080) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `PHPMYADMIN_PORT` | `8080` | phpmyadmin host port (default: 8080) |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 8080 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec phpmyadmin ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v phpmyadmin_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/phpmyadmin-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v phpmyadmin_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/phpmyadmin-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [Phpmyadmin](https://github.com/phpmyadmin/phpmyadmin)\n- **Docker Image:** `docker.io/library/phpmyadmin:latest`\n- **Issues:** [GitHub Issues](https://github.com/phpmyadmin/phpmyadmin/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "Self-hosted Phpmyadmin deployment via Docker\r\n\r\nThis template provides a containerized deployment of [Phpmyadmin](phpmyadmin) using Docker Compose."
"intro": "Web-based MySQL/MariaDB administration"
},
{
"id": "picsur",
@@ -14499,15 +14534,16 @@
"yunohost"
],
"sections": {
"quickStart": "1. **Clone and configure:**\r\n\r\n ```bash\r\n cp .env.example .env\r\n # Edit .env with your configuration\r\n ```\r\n\r\n2. **Start the service:**\r\n\r\n ```bash\r\n docker compose up -d\r\n ```\r\n\r\n3. **Verify it's running:**\r\n\r\n ```bash\r\n docker compose ps\r\n curl -s http://localhost:9090/ | head -c 200\r\n ```\r\n\r\n4. **Access the application:**\r\n\r\n Open [http://localhost:9090](http://localhost:9090) in your browser.",
"architecture": "| Component | Image | Purpose |\r\n|-----------|-------|---------|\r\n| `prometheus` | docker.io/prom/prometheus:latest | Main application service |\r\n| `prometheus_data` | (volume) | Persistent data storage |\r\n\r\nServices communicate over a shared Docker network. Data is persisted in named volumes.",
"configuration": "Environment variables (set in `.env`):\r\n\r\n| Variable | Default | Description |\r\n|----------|---------|-------------|\r\n| `PROMETHEUS_PORT` | `9090` | Configuration variable |",
"troubleshooting": "**Container won't start:**\r\n```bash\r\ndocker compose logs prometheus\r\n```\r\n\r\n**Port conflict:**\r\nEdit `.env` and change `PROMETHEUS_PORT` to an available port, then restart:\r\n```bash\r\ndocker compose down && docker compose up -d\r\n```\r\n\r\n**Permission errors:**\r\nEnsure the Docker user has write access to the data volume:\r\n```bash\r\ndocker compose exec prometheus ls -la /data\r\n```\r\n\r\n**Health check failing:**\r\n```bash\r\ndocker compose ps # Check STATUS column\r\ndocker inspect prometheus --format='{{json .State.Health}}'\r\n```",
"backup": "**Backup:**\r\n```bash\r\n# Stop the service\r\ndocker compose down\r\n\r\n# Backup the data volume\r\ndocker run --rm -v prometheus_data:/data -v $(pwd):/backup alpine tar czf /backup/prometheus-backup-$(date +%Y%m%d).tar.gz /data\r\n\r\n# Restart\r\ndocker compose up -d\r\n```\r\n\r\n**Restore:**\r\n```bash\r\ndocker compose down\r\ndocker run --rm -v prometheus_data:/data -v $(pwd):/backup alpine sh -c \"rm -rf /data/* && tar xzf /backup/prometheus-backup.tar.gz -C /\"\r\ndocker compose up -d\r\n```",
"links": "- **Docker Image:** `docker.io/prom/prometheus:latest`",
"prerequisites": "- Docker Engine 20.10+\r\n- Docker Compose v2.0+\r\n- 512MB+ RAM recommended\r\n- 1GB+ free disk space for data storage"
"projectOverview": "[Prometheus](https://github.com/prometheus/prometheus) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Prometheus in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `prometheus` | `docker.io/prom/prometheus:latest` | Main application service |\n\n### Volumes\n\n| Volume | Mount | Purpose |\n|--------|-------|---------|\n| `prometheus_data` | (varies) | Persistent data storage |\n\n### Health Check\n\nThe container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:9090/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:9090](http://localhost:9090) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `PROMETHEUS_PORT` | `9090` | prometheus host port (default: 9090) |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 9090 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec prometheus ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v prometheus_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/prometheus-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v prometheus_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/prometheus-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [Prometheus](https://github.com/prometheus/prometheus)\n- **Docker Image:** `docker.io/prom/prometheus:latest`\n- **Issues:** [GitHub Issues](https://github.com/prometheus/prometheus/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "Self-hosted Prometheus deployment via Docker\r\n\r\nThis template provides a containerized deployment of [Prometheus](prometheus) using Docker Compose."
"intro": "Open-source monitoring and alerting"
},
{
"id": "promptfoo",
@@ -15032,15 +15068,16 @@
"portainer"
],
"sections": {
"quickStart": "1. **Clone and configure:**\r\n\r\n ```bash\r\n cp .env.example .env\r\n # Edit .env with your configuration\r\n ```\r\n\r\n2. **Start the service:**\r\n\r\n ```bash\r\n docker compose up -d\r\n ```\r\n\r\n3. **Verify it's running:**\r\n\r\n ```bash\r\n docker compose ps\r\n curl -s http://localhost:8080/ | head -c 200\r\n ```\r\n\r\n4. **Access the application:**\r\n\r\n Open [http://localhost:8080](http://localhost:8080) in your browser.",
"architecture": "| Component | Image | Purpose |\r\n|-----------|-------|---------|\r\n| `rabbitmq` | docker.io/bitnamicharts/rabbitmq:latest | Main application service |\r\n| `rabbitmq_data` | (volume) | Persistent data storage |\r\n\r\nServices communicate over a shared Docker network. Data is persisted in named volumes.",
"configuration": "Environment variables (set in `.env`):\r\n\r\n| Variable | Default | Description |\r\n|----------|---------|-------------|\r\n| `RABBITMQ_PORT` | `8080` | Configuration variable |",
"troubleshooting": "**Container won't start:**\r\n```bash\r\ndocker compose logs rabbitmq\r\n```\r\n\r\n**Port conflict:**\r\nEdit `.env` and change `RABBITMQ_PORT` to an available port, then restart:\r\n```bash\r\ndocker compose down && docker compose up -d\r\n```\r\n\r\n**Permission errors:**\r\nEnsure the Docker user has write access to the data volume:\r\n```bash\r\ndocker compose exec rabbitmq ls -la /data\r\n```\r\n\r\n**Health check failing:**\r\n```bash\r\ndocker compose ps # Check STATUS column\r\ndocker inspect rabbitmq --format='{{json .State.Health}}'\r\n```",
"backup": "**Backup:**\r\n```bash\r\n# Stop the service\r\ndocker compose down\r\n\r\n# Backup the data volume\r\ndocker run --rm -v rabbitmq_data:/data -v $(pwd):/backup alpine tar czf /backup/rabbitmq-backup-$(date +%Y%m%d).tar.gz /data\r\n\r\n# Restart\r\ndocker compose up -d\r\n```\r\n\r\n**Restore:**\r\n```bash\r\ndocker compose down\r\ndocker run --rm -v rabbitmq_data:/data -v $(pwd):/backup alpine sh -c \"rm -rf /data/* && tar xzf /backup/rabbitmq-backup.tar.gz -C /\"\r\ndocker compose up -d\r\n```",
"links": "- **Docker Image:** `docker.io/bitnamicharts/rabbitmq:latest`",
"prerequisites": "- Docker Engine 20.10+\r\n- Docker Compose v2.0+\r\n- 512MB+ RAM recommended\r\n- 1GB+ free disk space for data storage"
"projectOverview": "[Rabbitmq](https://github.com/rabbitmq/rabbitmq-server) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Rabbitmq in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `rabbitmq` | `docker.io/bitnamicharts/rabbitmq:latest` | Main application service |\n\n### Volumes\n\n| Volume | Mount | Purpose |\n|--------|-------|---------|\n| `rabbitmq_data` | (varies) | Persistent data storage |\n\n### Health Check\n\nThe container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:8080/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:8080](http://localhost:8080) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `RABBITMQ_PORT` | `8080` | RabbitMQ host port (default: 8080) |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 8080 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec rabbitmq ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v rabbitmq_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/rabbitmq-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v rabbitmq_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/rabbitmq-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [Rabbitmq](https://github.com/rabbitmq/rabbitmq-server)\n- **Docker Image:** `docker.io/bitnamicharts/rabbitmq:latest`\n- **Issues:** [GitHub Issues](https://github.com/rabbitmq/rabbitmq-server/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "Self-hosted Rabbitmq deployment via Docker\r\n\r\nThis template provides a containerized deployment of [Rabbitmq](rabbitmq) using Docker Compose."
"intro": "Open-source message broker"
},
{
"id": "radarr",
@@ -15352,15 +15389,16 @@
"portainer"
],
"sections": {
"quickStart": "1. **Clone and configure:**\r\n\r\n ```bash\r\n cp .env.example .env\r\n # Edit .env with your configuration\r\n ```\r\n\r\n2. **Start the service:**\r\n\r\n ```bash\r\n docker compose up -d\r\n ```\r\n\r\n3. **Verify it's running:**\r\n\r\n ```bash\r\n docker compose ps\r\n curl -s http://localhost:8080/ | head -c 200\r\n ```\r\n\r\n4. **Access the application:**\r\n\r\n Open [http://localhost:8080](http://localhost:8080) in your browser.",
"architecture": "| Component | Image | Purpose |\r\n|-----------|-------|---------|\r\n| `redis` | docker.io/redislabs/redis:latest | Main application service |\r\n| `redis_data` | (volume) | Persistent data storage |\r\n\r\nServices communicate over a shared Docker network. Data is persisted in named volumes.",
"configuration": "Environment variables (set in `.env`):\r\n\r\n| Variable | Default | Description |\r\n|----------|---------|-------------|\r\n| `REDIS_PORT` | `8080` | Configuration variable |",
"troubleshooting": "**Container won't start:**\r\n```bash\r\ndocker compose logs redis\r\n```\r\n\r\n**Port conflict:**\r\nEdit `.env` and change `REDIS_PORT` to an available port, then restart:\r\n```bash\r\ndocker compose down && docker compose up -d\r\n```\r\n\r\n**Permission errors:**\r\nEnsure the Docker user has write access to the data volume:\r\n```bash\r\ndocker compose exec redis ls -la /data\r\n```\r\n\r\n**Health check failing:**\r\n```bash\r\ndocker compose ps # Check STATUS column\r\ndocker inspect redis --format='{{json .State.Health}}'\r\n```",
"backup": "**Backup:**\r\n```bash\r\n# Stop the service\r\ndocker compose down\r\n\r\n# Backup the data volume\r\ndocker run --rm -v redis_data:/data -v $(pwd):/backup alpine tar czf /backup/redis-backup-$(date +%Y%m%d).tar.gz /data\r\n\r\n# Restart\r\ndocker compose up -d\r\n```\r\n\r\n**Restore:**\r\n```bash\r\ndocker compose down\r\ndocker run --rm -v redis_data:/data -v $(pwd):/backup alpine sh -c \"rm -rf /data/* && tar xzf /backup/redis-backup.tar.gz -C /\"\r\ndocker compose up -d\r\n```",
"links": "- **Docker Image:** `docker.io/redislabs/redis:latest`",
"prerequisites": "- Docker Engine 20.10+\r\n- Docker Compose v2.0+\r\n- 512MB+ RAM recommended\r\n- 1GB+ free disk space for data storage"
"projectOverview": "[Redis](https://github.com/redis/redis) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Redis in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `redis` | `docker.io/redislabs/redis:latest` | Caching layer |\n\n### Volumes\n\n| Volume | Mount | Purpose |\n|--------|-------|---------|\n| `redis_data` | (varies) | Persistent data storage |\n\n### Health Check\n\nThe container runs a health check every 30s (3 retries, 10s start period). Docker will report the container as unhealthy if the endpoint fails consistently.\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:8080/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:8080](http://localhost:8080) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `REDIS_PORT` | `8080` | Redis host port (default: 8080) |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 8080 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec redis ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v redis_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/redis-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v redis_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/redis-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [Redis](https://github.com/redis/redis)\n- **Docker Image:** `docker.io/redislabs/redis:latest`\n- **Issues:** [GitHub Issues](https://github.com/redis/redis/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "In-memory data store used as a database, cache, message broker, and streaming engine for high-performance applications\r\n\r\nThis template provides a containerized deployment of [Redis](redis) using Docker Compose."
"intro": "In-memory data store and cache"
},
{
"id": "redlib",
@@ -17636,15 +17674,16 @@
"umbrel"
],
"sections": {
"quickStart": "1. **Clone and configure:**\r\n\r\n ```bash\r\n cp .env.example .env\r\n # Edit .env with your configuration\r\n ```\r\n\r\n2. **Start the service:**\r\n\r\n ```bash\r\n docker compose up -d\r\n ```\r\n\r\n3. **Verify it's running:**\r\n\r\n ```bash\r\n docker compose ps\r\n curl -s http://localhost:8080/ | head -c 200\r\n ```\r\n\r\n4. **Access the application:**\r\n\r\n Open [http://localhost:8080](http://localhost:8080) in your browser.",
"architecture": "| Component | Image | Purpose |\r\n|-----------|-------|---------|\r\n| `teamspeak` | docker.io/library/teamspeak:latest | Main application service |\r\n| `teamspeak_data` | (volume) | Persistent data storage |\r\n\r\nServices communicate over a shared Docker network. Data is persisted in named volumes.",
"configuration": "Environment variables (set in `.env`):\r\n\r\n| Variable | Default | Description |\r\n|----------|---------|-------------|\r\n| `TEAMSPEAK_PORT` | `8080` | Configuration variable |",
"troubleshooting": "**Container won't start:**\r\n```bash\r\ndocker compose logs teamspeak\r\n```\r\n\r\n**Port conflict:**\r\nEdit `.env` and change `TEAMSPEAK_PORT` to an available port, then restart:\r\n```bash\r\ndocker compose down && docker compose up -d\r\n```\r\n\r\n**Permission errors:**\r\nEnsure the Docker user has write access to the data volume:\r\n```bash\r\ndocker compose exec teamspeak ls -la /data\r\n```\r\n\r\n**Health check failing:**\r\n```bash\r\ndocker compose ps # Check STATUS column\r\ndocker inspect teamspeak --format='{{json .State.Health}}'\r\n```",
"backup": "**Backup:**\r\n```bash\r\n# Stop the service\r\ndocker compose down\r\n\r\n# Backup the data volume\r\ndocker run --rm -v teamspeak_data:/data -v $(pwd):/backup alpine tar czf /backup/teamspeak-backup-$(date +%Y%m%d).tar.gz /data\r\n\r\n# Restart\r\ndocker compose up -d\r\n```\r\n\r\n**Restore:**\r\n```bash\r\ndocker compose down\r\ndocker run --rm -v teamspeak_data:/data -v $(pwd):/backup alpine sh -c \"rm -rf /data/* && tar xzf /backup/teamspeak-backup.tar.gz -C /\"\r\ndocker compose up -d\r\n```",
"links": "- **Docker Image:** `docker.io/library/teamspeak:latest`",
"prerequisites": "- Docker Engine 20.10+\r\n- Docker Compose v2.0+\r\n- 512MB+ RAM recommended\r\n- 1GB+ free disk space for data storage"
"projectOverview": "[Teamspeak](https://github.com/TeamSpeak/TeamSpeak-3-server) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Teamspeak in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `teamspeak` | `docker.io/library/teamspeak:latest` | Main application service |\n\n### Volumes\n\n| Volume | Mount | Purpose |\n|--------|-------|---------|\n| `teamspeak_data` | (varies) | Persistent data storage |\n\n### Health Check\n\nThe container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:8080/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:8080](http://localhost:8080) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `TEAMSPEAK_PORT` | `8080` | teamspeak host port (default: 8080) |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 8080 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec teamspeak ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v teamspeak_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/teamspeak-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v teamspeak_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/teamspeak-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [Teamspeak](https://github.com/TeamSpeak/TeamSpeak-3-server)\n- **Docker Image:** `docker.io/library/teamspeak:latest`\n- **Issues:** [GitHub Issues](https://github.com/TeamSpeak/TeamSpeak-3-server/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "Self-hosted Teamspeak deployment via Docker\r\n\r\nThis template provides a containerized deployment of [Teamspeak](teamspeak) using Docker Compose."
"intro": "Voice communication platform"
},
{
"id": "telepresence",
@@ -17713,13 +17752,16 @@
"observability"
],
"sections": {
"quickStart": "1. **Create your config file:** TensorZero requires a `config/tensorzero.toml` to define your model gateways and functions. See [TensorZero's configuration guide](https://www.tensorzero.com/docs/reference/tensorzero.toml).\n\n2. **Copy and edit the environment file:**\n\n ```bash\n cp .env.example .env\n # Add at least one API key\n ```\n\n3. **Start the gateway:**\n\n ```bash\n docker compose up -d\n ```\n\n4. **Verify it's running:**\n\n ```bash\n curl http://localhost:3000/health\n ```\n\n Expected response: `{\"status\":\"ok\"}`\n\n5. **Route an inference:**\n\n ```bash\n curl -X POST http://localhost:3000/inference \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"function_name\": \"basic_chat\",\n \"input\": {\n \"messages\": [\n {\"role\": \"user\", \"content\": \"Hello, world!\"}\n ]\n }\n }'\n ```",
"configuration": "Copy `.env.example` to `.env` and edit:\n\n| Variable | Default | Description |\n|------------------------------|------------------------------------|-------------------------------------------------|\n| `TENSORZERO_PORT` | `3000` | Host port for the gateway HTTP API |\n| `OPENAI_API_KEY` | — | OpenAI API key (optional) |\n| `ANTHROPIC_API_KEY` | — | Anthropic API key (optional) |\n| `GOOGLE_API_KEY` | — | Google / Gemini API key (optional) |\n| `AWS_ACCESS_KEY_ID` | — | AWS access key for Bedrock (optional) |\n| `AWS_SECRET_ACCESS_KEY` | — | AWS secret key for Bedrock (optional) |\n| `AWS_DEFAULT_REGION` | `us-east-1` | AWS region for Bedrock |\n| `OLLAMA_BASE_URL` | `http://host.docker.internal:11434`| Local Ollama endpoint |\n| `TENSORZERO_CLICKHOUSE_URL` | — | ClickHouse URL for inference observability |\n\n### Configuration File\n\nTensorZero reads `/app/config/tensorzero.toml` from the mounted `./config` directory. Create this file to define your model gateways, functions, and provider routing. Example:\n\n```toml\n[gateways.default]\ntype = \"openai\"\nmodel_name = \"gpt-4o\"\n```",
"apiEndpoints": "| Endpoint | Method | Description |\n|----------------|--------|---------------------------------------------------|\n| `/health` | GET | Readiness check |\n| `/inference` | POST | Route an inference request |\n| `/openai/*` | POST | OpenAI-compatible chat completions endpoint |",
"healthCheck": "```bash\ncurl http://localhost:3000/health\n```\n\nExpected response:\n```json\n{\"status\":\"ok\"}\n```",
"troubleshooting": "| Symptom | Likely Cause | Fix |\n|-------------------------------------------------|------------------------------------|--------------------------------------------------------|\n| `401 Unauthorized` | No API key configured | Set at least one provider API key in `.env` |\n| `Connection refused` on port 3000 | Container still starting | Wait a few seconds and retry |\n| Model not found | Missing config entry | Add the model to `config/tensorzero.toml` |\n| Ollama connection error | Ollama not running locally | Start Ollama or update `OLLAMA_BASE_URL` |"
"projectOverview": "[TensorZero](https://github.com/tensorzero/tensorzero) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run TensorZero in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `tensorzero` | `tensorzero/gateway:latest` | Main application service |\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:3000/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:3000](http://localhost:3000) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `TENSORZERO_PORT` | `3000` | Host port to expose the TensorZero gateway on (default: 3000) |\n| `OPENAI_API_KEY` | `—` | OpenAI |\n| `ANTHROPIC_API_KEY` | `—` | Anthropic |\n| `GOOGLE_API_KEY` | `—` | Google / Gemini |\n| `AWS_ACCESS_KEY_ID` | `—` | AWS Bedrock |\n| `AWS_SECRET_ACCESS_KEY` | `—` | AWS_SECRET_ACCESS_KEY configuration value |\n| `AWS_DEFAULT_REGION` | `us-east-1` | AWS_DEFAULT_REGION configuration value |\n| `OLLAMA_BASE_URL` | `http://host.docker.internal:11434` | For Ollama running on the host machine (or at a custom URL) |\n| `TENSORZERO_CONFIG_FILE` | `/app/config/tensorzero.toml` | Path to the TensorZero gateway configuration file (default: /app/config/tensorzero.toml) |\n| `TENSORZERO_CLICKHOUSE_URL` | `—` | If empty, TensorZero logs to stdout only. |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 3000 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec tensorzero ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v tensorzero_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/tensorzero-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v tensorzero_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/tensorzero-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [TensorZero](https://github.com/tensorzero/tensorzero)\n- **Docker Image:** `tensorzero/gateway:latest`\n- **Issues:** [GitHub Issues](https://github.com/tensorzero/tensorzero/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "[TensorZero](https://www.tensorzero.com/) is an open-source inference gateway that provides a unified API for multiple LLM providers (OpenAI, Anthropic, Google, AWS Bedrock, Ollama) with built-in fallbacks, load balancing, caching, and observability."
"intro": "AI agent evaluation and monitoring"
},
{
"id": "termix",
@@ -17785,15 +17827,16 @@
"reference"
],
"sections": {
"quickStart": "1. **Clone and configure:**\r\n\r\n ```bash\r\n cp .env.example .env\r\n # Edit .env with your configuration\r\n ```\r\n\r\n2. **Start the service:**\r\n\r\n ```bash\r\n docker compose up -d\r\n ```\r\n\r\n3. **Verify it's running:**\r\n\r\n ```bash\r\n docker compose ps\r\n curl -s http://localhost:80/ | head -c 200\r\n ```\r\n\r\n4. **Access the application:**\r\n\r\n Open [http://localhost:80](http://localhost:80) in your browser.",
"architecture": "| Component | Image | Purpose |\r\n|-----------|-------|---------|\r\n| `app` | nginx:latest | Main application service |\r\n\r\nServices communicate over a shared Docker network. Data is persisted in named volumes.",
"configuration": "Environment variables (set in `.env`):\r\n\r\n| Variable | Default | Description |\r\n|----------|---------|-------------|\r\n| `PORT` | `80` | Configuration variable |\r\n| `HOST` | `0.0.0.0` | Configuration variable |",
"troubleshooting": "**Container won't start:**\r\n```bash\r\ndocker compose logs app\r\n```\r\n\r\n**Port conflict:**\r\nEdit `.env` and change `TEST-APP_PORT` to an available port, then restart:\r\n```bash\r\ndocker compose down && docker compose up -d\r\n```\r\n\r\n**Permission errors:**\r\nEnsure the Docker user has write access to the data volume:\r\n```bash\r\ndocker compose exec app ls -la /data\r\n```\r\n\r\n**Health check failing:**\r\n```bash\r\ndocker compose ps # Check STATUS column\r\ndocker inspect test-app --format='{{json .State.Health}}'\r\n```",
"backup": "**Backup:**\r\n```bash\r\n# Stop the service\r\ndocker compose down\r\n\r\n# Backup the data volume\r\ndocker run --rm -v test-app_data:/data -v $(pwd):/backup alpine tar czf /backup/test-app-backup-$(date +%Y%m%d).tar.gz /data\r\n\r\n# Restart\r\ndocker compose up -d\r\n```\r\n\r\n**Restore:**\r\n```bash\r\ndocker compose down\r\ndocker run --rm -v test-app_data:/data -v $(pwd):/backup alpine sh -c \"rm -rf /data/* && tar xzf /backup/test-app-backup.tar.gz -C /\"\r\ndocker compose up -d\r\n```",
"links": "- **Docker Image:** `nginx:latest`",
"prerequisites": "- Docker Engine 20.10+\r\n- Docker Compose v2.0+\r\n- 512MB+ RAM recommended\r\n- 1GB+ free disk space for data storage"
"projectOverview": "[Test Application](https://github.com/arcane/arcane) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Test Application in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `app` | `nginx:latest` | Main application service |\n\n### Health Check\n\nThe container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:80/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:80](http://localhost:80) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `PORT` | `80` | PORT configuration value |\n| `HOST` | `0.0.0.0` | HOST configuration value |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 80 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec app ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v test-app_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/test-app-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v test-app_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/test-app-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [Test Application](https://github.com/arcane/arcane)\n- **Docker Image:** `nginx:latest`\n- **Issues:** [GitHub Issues](https://github.com/arcane/arcane/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "A test template for verifying the build-registry script\r\n\r\nThis template provides a containerized deployment of [Test Application](test application) using Docker Compose."
"intro": "Test scaffold for Arcane build tools"
},
{
"id": "text-generation-inference",
@@ -18577,13 +18620,16 @@
"api"
],
"sections": {
"quickStart": "1. **Set your API key and start the server:**\n\n ```bash\n cp .env.example .env\n # Edit .env — set TYPESENSE_API_KEY to a strong random string\n docker compose up -d\n ```\n\n2. **Verify the server is running:**\n\n ```bash\n curl -X GET http://localhost:8108/health \\\n -H \"X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY:-your-api-key}\"\n ```\n\n Expected response: `{\"ok\": true}`\n\n3. **Create a collection (index):**\n\n ```bash\n curl -X POST http://localhost:8108/collections \\\n -H \"Content-Type: application/json\" \\\n -H \"X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY:-your-api-key}\" \\\n -d '{\n \"name\": \"books\",\n \"fields\": [\n {\"name\": \"title\", \"type\": \"string\"},\n {\"name\": \"author\", \"type\": \"string\"},\n {\"name\": \"year\", \"type\": \"int32\"},\n {\"name\": \"rating\", \"type\": \"float\"}\n ],\n \"default_sorting_field\": \"year\"\n }'\n ```\n\n4. **Index some documents:**\n\n ```bash\n curl -X POST http://localhost:8108/collections/books/documents \\\n -H \"Content-Type: application/json\" \\\n -H \"X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY:-your-api-key}\" \\\n -d '{\n \"title\": \"The Great Gatsby\",\n \"author\": \"F. Scott Fitzgerald\",\n \"year\": 1925,\n \"rating\": 4.5\n }'\n ```\n\n5. **Search with typo tolerance:**\n\n ```bash\n curl \"http://localhost:8108/collections/books/documents/search?q=gatsby&query_by=title&per_page=5\" \\\n -H \"X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY:-your-api-key}\"\n ```\n\n Try a deliberate typo — `gastsby` — and TypeSense will still find \"The Great Gatsby\".",
"configuration": "Copy `.env.example` to `.env` and edit:\n\n### Mandatory Variables\n\n| Variable | Description |\n|----------------------|-----------------------------------------------------------------------------|\n| `TYPESENSE_API_KEY` | API key authenticating all requests. Generate with `openssl rand -hex 32`. |\n\n### Optional Variables\n\n| Variable | Default | Description |\n|------------------------|---------|----------------------------------------------|\n| `TYPESENSE_PORT` | `8108` | Host port for the TypeSense API |\n| `TYPESENSE_ENABLE_CORS`| `true` | Allow browser-based requests |",
"apiEndpoints": "TypeSense exposes a REST API on port 8108:\n\n| Endpoint | Method | Description |\n|---------------------------------------------|--------|--------------------------------------|\n| `/health` | GET | Health check |\n| `/collections` | GET | List all collections |\n| `/collections` | POST | Create a collection |\n| `/collections/:name` | GET | Retrieve a collection |\n| `/collections/:name` | DELETE | Drop a collection |\n| `/collections/:name/documents` | POST | Index a document |\n| `/collections/:name/documents/search` | GET | Search documents |\n| `/collections/:name/documents/:id` | GET | Retrieve a document |\n| `/collections/:name/documents/:id` | DELETE | Delete a document |\n| `/collections/:name/documents/export` | GET | Export all documents as JSON lines |\n| `/collections/:name/documents/import` | POST | Bulk import documents (JSON lines) |\n| `/multi_search` | POST | Search multiple collections at once |\n\nFull API reference: [typesense.org/docs/latest/api](https://typesense.org/docs/latest/api/)",
"healthCheck": "```bash\ncurl -X GET http://localhost:8108/health \\\n -H \"X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY:-your-api-key}\"\n```\n\nA healthy server returns:\n```json\n{\"ok\": true}\n```",
"troubleshooting": "| Symptom | Likely Cause | Fix |\n|-------------------------------------------------------|-------------------------------------|-----------------------------------------------------|\n| `401 Unauthorized` | Missing or incorrect API key | Verify `TYPESENSE_API_KEY` in `.env` matches the header value |\n| `{\"ok\": false}` from health endpoint | Server not fully initialized | Wait a few seconds and retry |\n| Search returns no results | Documents not indexed yet | Check document count: `GET /collections/:name` |\n| Slow import performance | Importing one document at a time | Use the bulk import endpoint with JSON lines |\n| `413 Request Entity Too Large` | Document exceeds size limit | Reduce document size or batch smaller chunks |"
"projectOverview": "[TypeSense](https://github.com/typesense/typesense) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run TypeSense in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `typesense` | `typesense/typesense:latest` | Main application service |\n\n### Volumes\n\n| Volume | Mount | Purpose |\n|--------|-------|---------|\n| `typesense_data` | (varies) | Persistent data storage |\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:8108/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:8108](http://localhost:8108) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `TYPESENSE_API_KEY` | `change-me-to-a-random-64-char-hex-string` | openssl rand -hex 32 |\n| `TYPESENSE_PORT` | `8108` | Host port to expose the TypeSense API on (default: 8108) |\n| `TYPESENSE_ENABLE_CORS` | `true` | Enable CORS headers for browser-based requests (default: true) |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 8108 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec typesense ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v typesense_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/typesense-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v typesense_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/typesense-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [TypeSense](https://github.com/typesense/typesense)\n- **Docker Image:** `typesense/typesense:latest`\n- **Issues:** [GitHub Issues](https://github.com/typesense/typesense/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "[TypeSense](https://typesense.org) is an open-source, typo-tolerant search engine. It delivers instant (<50ms) search results with typo correction, faceted filtering, geosearch, vector search, and automatic ranking — all with a simple REST API. Think of it as an open-source alternative to Algolia with a fraction of the infrastructure cost."
"intro": "Typo-tolerant search engine"
},
{
"id": "ubooquity",
@@ -18625,15 +18671,16 @@
"portainer"
],
"sections": {
"quickStart": "1. **Clone and configure:**\r\n\r\n ```bash\r\n cp .env.example .env\r\n # Edit .env with your configuration\r\n ```\r\n\r\n2. **Start the service:**\r\n\r\n ```bash\r\n docker compose up -d\r\n ```\r\n\r\n3. **Verify it's running:**\r\n\r\n ```bash\r\n docker compose ps\r\n curl -s http://localhost:8080/ | head -c 200\r\n ```\r\n\r\n4. **Access the application:**\r\n\r\n Open [http://localhost:8080](http://localhost:8080) in your browser.",
"architecture": "| Component | Image | Purpose |\r\n|-----------|-------|---------|\r\n| `ubuntu` | docker.io/ubuntu:latest | Main application service |\r\n| `ubuntu_data` | (volume) | Persistent data storage |\r\n\r\nServices communicate over a shared Docker network. Data is persisted in named volumes.",
"configuration": "Environment variables (set in `.env`):\r\n\r\n| Variable | Default | Description |\r\n|----------|---------|-------------|\r\n| `UBUNTU_PORT` | `8080` | Configuration variable |",
"troubleshooting": "**Container won't start:**\r\n```bash\r\ndocker compose logs ubuntu\r\n```\r\n\r\n**Port conflict:**\r\nEdit `.env` and change `UBUNTU_PORT` to an available port, then restart:\r\n```bash\r\ndocker compose down && docker compose up -d\r\n```\r\n\r\n**Permission errors:**\r\nEnsure the Docker user has write access to the data volume:\r\n```bash\r\ndocker compose exec ubuntu ls -la /data\r\n```\r\n\r\n**Health check failing:**\r\n```bash\r\ndocker compose ps # Check STATUS column\r\ndocker inspect ubuntu --format='{{json .State.Health}}'\r\n```",
"backup": "**Backup:**\r\n```bash\r\n# Stop the service\r\ndocker compose down\r\n\r\n# Backup the data volume\r\ndocker run --rm -v ubuntu_data:/data -v $(pwd):/backup alpine tar czf /backup/ubuntu-backup-$(date +%Y%m%d).tar.gz /data\r\n\r\n# Restart\r\ndocker compose up -d\r\n```\r\n\r\n**Restore:**\r\n```bash\r\ndocker compose down\r\ndocker run --rm -v ubuntu_data:/data -v $(pwd):/backup alpine sh -c \"rm -rf /data/* && tar xzf /backup/ubuntu-backup.tar.gz -C /\"\r\ndocker compose up -d\r\n```",
"links": "- **Docker Image:** `docker.io/ubuntu:latest`",
"prerequisites": "- Docker Engine 20.10+\r\n- Docker Compose v2.0+\r\n- 512MB+ RAM recommended\r\n- 1GB+ free disk space for data storage"
"projectOverview": "[Ubuntu](https://ubuntu.com/) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Ubuntu in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `ubuntu` | `docker.io/ubuntu:latest` | Main application service |\n\n### Volumes\n\n| Volume | Mount | Purpose |\n|--------|-------|---------|\n| `ubuntu_data` | (varies) | Persistent data storage |\n\n### Health Check\n\nThe container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:8080/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:8080](http://localhost:8080) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `UBUNTU_PORT` | `8080` | Ubuntu host port (default: 8080) |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 8080 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec ubuntu ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v ubuntu_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/ubuntu-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v ubuntu_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/ubuntu-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [Ubuntu](https://ubuntu.com/)\n- **Docker Image:** `docker.io/ubuntu:latest`\n- **Issues:** [GitHub Issues](https://ubuntu.com/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "Self-hosted Ubuntu deployment via Docker\r\n\r\nThis template provides a containerized deployment of [Ubuntu](ubuntu) using Docker Compose."
"intro": "Ubuntu Linux OS container"
},
{
"id": "ufw-docker",
@@ -19402,13 +19449,16 @@
"search"
],
"sections": {
"quickStart": "1. **Start the server:**\n\n ```bash\n docker compose up -d\n ```\n\n2. **Verify it's running:**\n\n ```bash\n curl http://localhost:8080/v1/.well-known/ready\n ```\n\n Expected response: `{\"ready\": true}`\n\n3. **Create a class (collection) with auto-generated vectors:**\n\n ```bash\n curl -X POST http://localhost:8080/v1/schema \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"class\": \"Document\",\n \"description\": \"A text document\",\n \"properties\": [\n {\"name\": \"content\", \"dataType\": [\"text\"], \"description\": \"The document content\"}\n ]\n }'\n ```\n\n4. **Insert an object:**\n\n ```bash\n curl -X POST http://localhost:8080/v1/objects \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"class\": \"Document\",\n \"properties\": {\n \"content\": \"Weaviate is an open-source vector database.\"\n }\n }'\n ```\n\n5. **Search with a vector query:**\n\n ```bash\n curl -X POST http://localhost:8080/v1/graphql \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"query\": \"{\n Get {\n Document(nearText: {concepts: [\\\"vector database\\\"]}) {\n content\n }\n }\n }\"\n }'\n ```",
"configuration": "Copy `.env.example` to `.env` and edit:\n\n| Variable | Default | Description |\n|------------------------------------------|-------------|--------------------------------------------------------|\n| `WEAVIATE_PORT` | `8080` | Host port for the Weaviate API |\n| `AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED`| `true` | Allow unauthenticated access |\n| `CLUSTER_HOSTNAME` | `weaviate-node-0` | Node name for multi-node deployments |\n| `DEFAULT_VECTORIZER_MODULE` | `none` | Default vectorizer (set to a module for auto-vectorization) |\n\n### Vectorizer Modules\n\nWeaviate supports pluggable vectorizer modules that auto-generate embeddings during import. To enable a specific vectorizer, set `DEFAULT_VECTORIZER_MODULE` and ensure the corresponding API key is available:\n\n| Module | API Key Env Var |\n|----------------------------------|-------------------------------------------------------------------|\n| `text2vec-openai` | `OPENAI_APIKEY` |\n| `text2vec-cohere` | `COHERE_APIKEY` |\n| `text2vec-huggingface` | `HUGGINGFACE_APIKEY` |\n| `text2vec-ollama` | None (local, but Ollama must be reachable at `OLLAMA_HOST`) |\n\nWithout a vectorizer module, you must provide your own embeddings when inserting objects (e.g., from an external embedding API).",
"apiEndpoints": "Weaviate exposes a REST API and a GraphQL API on port 8080:\n\n| Endpoint | Method | Description |\n|-----------------------------------|--------|------------------------------------------------|\n| `/v1/.well-known/ready` | GET | Readiness check |\n| `/v1/.well-known/live` | GET | Liveness check |\n| `/v1/schema` | GET | List all classes |\n| `/v1/schema` | POST | Create a class |\n| `/v1/objects` | GET | List objects |\n| `/v1/objects` | POST | Create an object |\n| `/v1/graphql` | POST | GraphQL query (Get, Aggregate, Explore) |\n| `/v1/classification` | POST | Start a classification |\n| `/v1/meta` | GET | Weaviate version and configuration metadata |",
"healthCheck": "```bash\ncurl http://localhost:8080/v1/.well-known/ready\n```\n\nA ready node returns:\n```json\n{\"ready\": true}\n```",
"troubleshooting": "| Symptom | Likely Cause | Fix |\n|-------------------------------------------------------|-----------------------------------------|------------------------------------------------------|\n| Connection refused on port 8080 | Container still starting | Wait a few seconds and retry |\n| `{\"error\":[{\"message\":\"no module with name ...\"}]}` | Vectorizer module not enabled | Set `ENABLE_MODULES` env var with the module name |\n| 401 Unauthorized | Anonymous access disabled but no key set | Set `AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=true` or configure an API key |\n| Objects inserted but search returns no results | No vectorizer and no vectors provided | Either enable a vectorizer module or supply vectors manually |"
"projectOverview": "[Weaviate](https://github.com/weaviate/weaviate) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Weaviate in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `weaviate` | `semitechnologies/weaviate:latest` | Main application service |\n\n### Volumes\n\n| Volume | Mount | Purpose |\n|--------|-------|---------|\n| `weaviate_data` | (varies) | Persistent data storage |\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:8080/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:8080](http://localhost:8080) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `WEAVIATE_PORT` | `8080` | Host port to expose the Weaviate API on (default: 8080) |\n| `AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED` | `true` | Set to false and configure an API key or OIDC for production |\n| `CLUSTER_HOSTNAME` | `weaviate-node-0` | Cluster hostname for multi-node setups (default: weaviate-node-0) |\n| `DEFAULT_VECTORIZER_MODULE` | `none` | Options: text2vec-cohere, text2vec-huggingface, text2vec-openai, text2vec-ollama, none |\n| `ENABLE_MODULES` | `text2vec-cohere,text2vec-huggingface,text2vec-openai,text2vec-ollama,generative-openai,generative-cohere,generative-ollama,qna-openai` | Comma-separated list of vectorizer and generative modules to enable. |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 8080 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec weaviate ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v weaviate_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/weaviate-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v weaviate_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/weaviate-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [Weaviate](https://github.com/weaviate/weaviate)\n- **Docker Image:** `semitechnologies/weaviate:latest`\n- **Issues:** [GitHub Issues](https://github.com/weaviate/weaviate/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "[Weaviate](https://weaviate.io) is an open-source vector database that stores both objects and vector embeddings, enabling hybrid search (vector + keyword), similarity search, and generative AI retrieval-augmented generation (RAG) pipelines. This template runs a single Weaviate node with persistent storage and module support for popular embedding providers."
"intro": "AI-native vector database"
},
{
"id": "webcheck",
@@ -19923,15 +19973,16 @@
"umbrel"
],
"sections": {
"quickStart": "1. **Clone and configure:**\r\n\r\n ```bash\r\n cp .env.example .env\r\n # Edit .env with your configuration\r\n ```\r\n\r\n2. **Start the service:**\r\n\r\n ```bash\r\n docker compose up -d\r\n ```\r\n\r\n3. **Verify it's running:**\r\n\r\n ```bash\r\n docker compose ps\r\n curl -s http://localhost:8080/ | head -c 200\r\n ```\r\n\r\n4. **Access the application:**\r\n\r\n Open [http://localhost:8080](http://localhost:8080) in your browser.",
"architecture": "| Component | Image | Purpose |\r\n|-----------|-------|---------|\r\n| `wordpress` | docker.io/library/wordpress:latest | Main application service |\r\n| `wordpress_data` | (volume) | Persistent data storage |\r\n\r\nServices communicate over a shared Docker network. Data is persisted in named volumes.",
"configuration": "Environment variables (set in `.env`):\r\n\r\n| Variable | Default | Description |\r\n|----------|---------|-------------|\r\n| `WORDPRESS_PORT` | `8080` | Configuration variable |",
"troubleshooting": "**Container won't start:**\r\n```bash\r\ndocker compose logs wordpress\r\n```\r\n\r\n**Port conflict:**\r\nEdit `.env` and change `WORDPRESS_PORT` to an available port, then restart:\r\n```bash\r\ndocker compose down && docker compose up -d\r\n```\r\n\r\n**Permission errors:**\r\nEnsure the Docker user has write access to the data volume:\r\n```bash\r\ndocker compose exec wordpress ls -la /data\r\n```\r\n\r\n**Health check failing:**\r\n```bash\r\ndocker compose ps # Check STATUS column\r\ndocker inspect wordpress --format='{{json .State.Health}}'\r\n```",
"backup": "**Backup:**\r\n```bash\r\n# Stop the service\r\ndocker compose down\r\n\r\n# Backup the data volume\r\ndocker run --rm -v wordpress_data:/data -v $(pwd):/backup alpine tar czf /backup/wordpress-backup-$(date +%Y%m%d).tar.gz /data\r\n\r\n# Restart\r\ndocker compose up -d\r\n```\r\n\r\n**Restore:**\r\n```bash\r\ndocker compose down\r\ndocker run --rm -v wordpress_data:/data -v $(pwd):/backup alpine sh -c \"rm -rf /data/* && tar xzf /backup/wordpress-backup.tar.gz -C /\"\r\ndocker compose up -d\r\n```",
"links": "- **Docker Image:** `docker.io/library/wordpress:latest`",
"prerequisites": "- Docker Engine 20.10+\r\n- Docker Compose v2.0+\r\n- 512MB+ RAM recommended\r\n- 1GB+ free disk space for data storage"
"projectOverview": "[Wordpress](https://github.com/WordPress/WordPress) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Wordpress in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `wordpress` | `docker.io/library/wordpress:latest` | Main application service |\n\n### Volumes\n\n| Volume | Mount | Purpose |\n|--------|-------|---------|\n| `wordpress_data` | (varies) | Persistent data storage |\n\n### Health Check\n\nThe container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:8080/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:8080](http://localhost:8080) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `WORDPRESS_PORT` | `8080` | wordpress host port (default: 8080) |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 8080 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec wordpress ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v wordpress_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/wordpress-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v wordpress_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/wordpress-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [Wordpress](https://github.com/WordPress/WordPress)\n- **Docker Image:** `docker.io/library/wordpress:latest`\n- **Issues:** [GitHub Issues](https://github.com/WordPress/WordPress/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "Self-hosted Wordpress deployment via Docker\r\n\r\nThis template provides a containerized deployment of [Wordpress](wordpress) using Docker Compose."
"intro": "World's most popular CMS"
},
{
"id": "workout-cool",
@@ -20091,15 +20142,16 @@
"portainer"
],
"sections": {
"quickStart": "1. **Clone and configure:**\r\n\r\n ```bash\r\n cp .env.example .env\r\n # Edit .env with your configuration\r\n ```\r\n\r\n2. **Start the service:**\r\n\r\n ```bash\r\n docker compose up -d\r\n ```\r\n\r\n3. **Verify it's running:**\r\n\r\n ```bash\r\n docker compose ps\r\n curl -s http://localhost:80/ | head -c 200\r\n ```\r\n\r\n4. **Access the application:**\r\n\r\n Open [http://localhost:80](http://localhost:80) in your browser.",
"architecture": "| Component | Image | Purpose |\r\n|-----------|-------|---------|\r\n| `xwiki` | docker.io/library/xwiki:latest | Main application service |\r\n| `xwiki_data` | (volume) | Persistent data storage |\r\n\r\nServices communicate over a shared Docker network. Data is persisted in named volumes.",
"configuration": "Environment variables (set in `.env`):\r\n\r\n| Variable | Default | Description |\r\n|----------|---------|-------------|\r\n| `XWIKI_PORT` | `80` | Configuration variable |",
"troubleshooting": "**Container won't start:**\r\n```bash\r\ndocker compose logs xwiki\r\n```\r\n\r\n**Port conflict:**\r\nEdit `.env` and change `XWIKI_PORT` to an available port, then restart:\r\n```bash\r\ndocker compose down && docker compose up -d\r\n```\r\n\r\n**Permission errors:**\r\nEnsure the Docker user has write access to the data volume:\r\n```bash\r\ndocker compose exec xwiki ls -la /data\r\n```\r\n\r\n**Health check failing:**\r\n```bash\r\ndocker compose ps # Check STATUS column\r\ndocker inspect xwiki --format='{{json .State.Health}}'\r\n```",
"backup": "**Backup:**\r\n```bash\r\n# Stop the service\r\ndocker compose down\r\n\r\n# Backup the data volume\r\ndocker run --rm -v xwiki_data:/data -v $(pwd):/backup alpine tar czf /backup/xwiki-backup-$(date +%Y%m%d).tar.gz /data\r\n\r\n# Restart\r\ndocker compose up -d\r\n```\r\n\r\n**Restore:**\r\n```bash\r\ndocker compose down\r\ndocker run --rm -v xwiki_data:/data -v $(pwd):/backup alpine sh -c \"rm -rf /data/* && tar xzf /backup/xwiki-backup.tar.gz -C /\"\r\ndocker compose up -d\r\n```",
"links": "- **Docker Image:** `docker.io/library/xwiki:latest`",
"prerequisites": "- Docker Engine 20.10+\r\n- Docker Compose v2.0+\r\n- 512MB+ RAM recommended\r\n- 1GB+ free disk space for data storage"
"projectOverview": "[Xwiki](https://github.com/xwiki/xwiki-platform) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Xwiki in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `xwiki` | `docker.io/library/xwiki:latest` | Main application service |\n\n### Volumes\n\n| Volume | Mount | Purpose |\n|--------|-------|---------|\n| `xwiki_data` | (varies) | Persistent data storage |\n\n### Health Check\n\nThe container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:80/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:80](http://localhost:80) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `XWIKI_PORT` | `80` | Xwiki host port (default: 80) |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 80 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec xwiki ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v xwiki_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/xwiki-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v xwiki_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/xwiki-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [Xwiki](https://github.com/xwiki/xwiki-platform)\n- **Docker Image:** `docker.io/library/xwiki:latest`\n- **Issues:** [GitHub Issues](https://github.com/xwiki/xwiki-platform/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "Self-hosted Xwiki deployment via Docker\r\n\r\nThis template provides a containerized deployment of [Xwiki](xwiki) using Docker Compose."
"intro": "Enterprise wiki platform"
},
{
"id": "yacht",
@@ -20461,15 +20513,16 @@
"portainer"
],
"sections": {
"quickStart": "1. **Clone and configure:**\r\n\r\n ```bash\r\n cp .env.example .env\r\n # Edit .env with your configuration\r\n ```\r\n\r\n2. **Start the service:**\r\n\r\n ```bash\r\n docker compose up -d\r\n ```\r\n\r\n3. **Verify it's running:**\r\n\r\n ```bash\r\n docker compose ps\r\n curl -s http://localhost:8080/ | head -c 200\r\n ```\r\n\r\n4. **Access the application:**\r\n\r\n Open [http://localhost:8080](http://localhost:8080) in your browser.",
"architecture": "| Component | Image | Purpose |\r\n|-----------|-------|---------|\r\n| `znc` | docker.io/library/znc:latest | Main application service |\r\n| `znc_data` | (volume) | Persistent data storage |\r\n\r\nServices communicate over a shared Docker network. Data is persisted in named volumes.",
"configuration": "Environment variables (set in `.env`):\r\n\r\n| Variable | Default | Description |\r\n|----------|---------|-------------|\r\n| `ZNC_PORT` | `8080` | Configuration variable |",
"troubleshooting": "**Container won't start:**\r\n```bash\r\ndocker compose logs znc\r\n```\r\n\r\n**Port conflict:**\r\nEdit `.env` and change `ZNC_PORT` to an available port, then restart:\r\n```bash\r\ndocker compose down && docker compose up -d\r\n```\r\n\r\n**Permission errors:**\r\nEnsure the Docker user has write access to the data volume:\r\n```bash\r\ndocker compose exec znc ls -la /data\r\n```\r\n\r\n**Health check failing:**\r\n```bash\r\ndocker compose ps # Check STATUS column\r\ndocker inspect znc --format='{{json .State.Health}}'\r\n```",
"backup": "**Backup:**\r\n```bash\r\n# Stop the service\r\ndocker compose down\r\n\r\n# Backup the data volume\r\ndocker run --rm -v znc_data:/data -v $(pwd):/backup alpine tar czf /backup/znc-backup-$(date +%Y%m%d).tar.gz /data\r\n\r\n# Restart\r\ndocker compose up -d\r\n```\r\n\r\n**Restore:**\r\n```bash\r\ndocker compose down\r\ndocker run --rm -v znc_data:/data -v $(pwd):/backup alpine sh -c \"rm -rf /data/* && tar xzf /backup/znc-backup.tar.gz -C /\"\r\ndocker compose up -d\r\n```",
"links": "- **Docker Image:** `docker.io/library/znc:latest`",
"prerequisites": "- Docker Engine 20.10+\r\n- Docker Compose v2.0+\r\n- 512MB+ RAM recommended\r\n- 1GB+ free disk space for data storage"
"projectOverview": "[Znc](https://github.com/znc/znc) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Znc in a containerized environment with persistent storage, health checks, and environment-based configuration.",
"architecture": "### Services\n\n| Service | Image | Purpose |\n|---------|-------|---------|\n| `znc` | `docker.io/library/znc:latest` | Main application service |\n\n### Volumes\n\n| Volume | Mount | Purpose |\n|--------|-------|---------|\n| `znc_data` | (varies) | Persistent data storage |\n\n### Health Check\n\nThe container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.\n\n### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.",
"quickStart": "### 1. Configure environment\n\n```bash\ncp .env.example .env\n# Edit .env with your configuration\n```\n\n### 2. Start the service\n\n```bash\ndocker compose up -d\n```\n\n### 3. Verify it's running\n\n```bash\ndocker compose ps\ncurl -s http://localhost:8080/ | head -c 200\n```\n\n### 4. Access the application\n\nOpen [http://localhost:8080](http://localhost:8080) in your browser.",
"configuration": "### Environment Variables\n\nSet these in your `.env` file (copy from `.env.example`):\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `ZNC_PORT` | `8080` | ZNC host port (default: 8080) |",
"troubleshooting": "### Container won't start\n\nCheck the logs for error messages:\n\n```bash\ndocker compose logs\n```\n\n### Port conflict\n\nIf the default port 8080 is already in use, change it in `.env` and restart:\n\n```bash\n# Edit .env and change to an available port\ndocker compose down && docker compose up -d\n```\n\n### Health check shows unhealthy\n\nThe container may need more time to start on first run or low-resource hosts. Check the logs:\n\n```bash\ndocker compose logs\n```\n\nIf needed, increase `start_period` in `docker-compose.yml`.\n\n### Permission errors\n\nEnsure the Docker user has write access to the data volume:\n\n```bash\ndocker compose exec znc ls -la /data 2>/dev/null || echo \"Volume directory not accessible\"\n```",
"backup": "### Backup\n\nStop the service to ensure data consistency, then back up the data volume:\n\n```bash\ndocker compose down\ndocker run --rm -v znc_data:/data -v $(pwd):/backup alpine \\\n tar czf /backup/znc-backup-$(date +%Y%m%d).tar.gz -C /data .\ndocker compose up -d\n```\n\n### Recovery\n\n```bash\ndocker compose down\ndocker run --rm -v znc_data:/data -v $(pwd):/backup alpine \\\n tar xzf /backup/znc-backup-YYYYMMDD.tar.gz -C /data\ndocker compose up -d\n```",
"upstream": "- **Project site:** [Znc](https://github.com/znc/znc)\n- **Docker Image:** `docker.io/library/znc:latest`\n- **Issues:** [GitHub Issues](https://github.com/znc/znc/issues)",
"prerequisites": "- Docker Engine 20.10+\n- Docker Compose v2.0+\n- 512MB+ RAM recommended\n- 1GB+ free disk space for data storage"
},
"intro": "Self-hosted Znc deployment via Docker\r\n\r\nThis template provides a containerized deployment of [Znc](znc) using Docker Compose."
"intro": "IRC bouncer"
},
{
"id": "zoraxy",
+3 -20
View File
@@ -1,26 +1,9 @@
{
"meta": {
"auditedAt": "2026-05-07T21:44:16.687Z",
"auditedAt": "2026-05-08T02:34:22.740Z",
"totalTemplates": 842,
"processed": 804,
"skipped": 38
},
"data": [
{
"templateId": "aionui",
"name": "AionUi",
"issues": [
{
"category": "missing-env-var",
"severity": "low",
"message": "Env var \"REPO_OWNER\" referenced in docker-compose.yml but not defined in .env.example"
},
{
"category": "missing-env-var",
"severity": "low",
"message": "Env var \"REPO_NAME\" referenced in docker-compose.yml but not defined in .env.example"
}
]
}
]
}
"data": []
}
+2 -255
View File
@@ -1,6 +1,6 @@
{
"meta": {
"auditedAt": "2026-05-07T21:44:16.687Z",
"auditedAt": "2026-05-08T02:34:22.740Z",
"totalTemplates": 842,
"processed": 804,
"skipped": 38
@@ -13,7 +13,7 @@
{
"category": "generic-description",
"severity": "medium",
"message": "Description matches generic pattern: \"Self-hosted 2fauth deployment via Docker\""
"message": "Description matches generic pattern: \"2Fauth — self-hosted via Docker Compose\""
}
]
},
@@ -39,17 +39,6 @@
}
]
},
{
"templateId": "adminer",
"name": "Adminer",
"issues": [
{
"category": "generic-description",
"severity": "medium",
"message": "Description matches generic pattern: \"Self-hosted Adminer deployment via Docker\""
}
]
},
{
"templateId": "adminerevo",
"name": "Adminerevo",
@@ -314,17 +303,6 @@
}
]
},
{
"templateId": "backdrop",
"name": "Backdrop",
"issues": [
{
"category": "generic-description",
"severity": "medium",
"message": "Description matches generic pattern: \"Self-hosted Backdrop deployment via Docker\""
}
]
},
{
"templateId": "backrest",
"name": "Backrest",
@@ -545,17 +523,6 @@
}
]
},
{
"templateId": "caddy",
"name": "Caddy",
"issues": [
{
"category": "generic-description",
"severity": "medium",
"message": "Description matches generic pattern: \"Self-hosted Caddy deployment via Docker\""
}
]
},
{
"templateId": "calcom",
"name": "Calcom",
@@ -919,17 +886,6 @@
}
]
},
{
"templateId": "couchdb",
"name": "Couchdb",
"issues": [
{
"category": "generic-description",
"severity": "medium",
"message": "Description matches generic pattern: \"Self-hosted Couchdb deployment via Docker\""
}
]
},
{
"templateId": "crewai",
"name": "CrewAI",
@@ -1315,17 +1271,6 @@
}
]
},
{
"templateId": "drupal",
"name": "Drupal",
"issues": [
{
"category": "generic-description",
"severity": "medium",
"message": "Description matches generic pattern: \"Self-hosted Drupal deployment via Docker\""
}
]
},
{
"templateId": "dumbbudget",
"name": "Dumbbudget",
@@ -1425,17 +1370,6 @@
}
]
},
{
"templateId": "elasticsearch",
"name": "Elasticsearch",
"issues": [
{
"category": "generic-description",
"severity": "medium",
"message": "Description matches generic pattern: \"Self-hosted Elasticsearch deployment via Docker\""
}
]
},
{
"templateId": "elasticsearch7",
"name": "elasticsearch7",
@@ -1964,17 +1898,6 @@
}
]
},
{
"templateId": "friendica",
"name": "Friendica",
"issues": [
{
"category": "generic-description",
"severity": "medium",
"message": "Description matches generic pattern: \"Self-hosted Friendica deployment via Docker\""
}
]
},
{
"templateId": "frigate",
"name": "Frigate",
@@ -2107,17 +2030,6 @@
}
]
},
{
"templateId": "ghost",
"name": "Ghost",
"issues": [
{
"category": "generic-description",
"severity": "medium",
"message": "Description matches generic pattern: \"Self-hosted Ghost deployment via Docker\""
}
]
},
{
"templateId": "ghostfolio",
"name": "Ghostfolio",
@@ -2272,17 +2184,6 @@
}
]
},
{
"templateId": "grafana",
"name": "Grafana",
"issues": [
{
"category": "generic-description",
"severity": "medium",
"message": "Description matches generic pattern: \"Self-hosted Grafana deployment via Docker\""
}
]
},
{
"templateId": "grav",
"name": "Grav",
@@ -2778,17 +2679,6 @@
}
]
},
{
"templateId": "joomla",
"name": "Joomla",
"issues": [
{
"category": "generic-description",
"severity": "medium",
"message": "Description matches generic pattern: \"Self-hosted Joomla deployment via Docker\""
}
]
},
{
"templateId": "joplin",
"name": "Joplin",
@@ -3504,17 +3394,6 @@
}
]
},
{
"templateId": "matomo",
"name": "Matomo",
"issues": [
{
"category": "generic-description",
"severity": "medium",
"message": "Description matches generic pattern: \"Self-hosted Matomo deployment via Docker\""
}
]
},
{
"templateId": "matterbridge",
"name": "Matterbridge",
@@ -3548,17 +3427,6 @@
}
]
},
{
"templateId": "mediawiki",
"name": "Mediawiki",
"issues": [
{
"category": "generic-description",
"severity": "medium",
"message": "Description matches generic pattern: \"Self-hosted Mediawiki deployment via Docker\""
}
]
},
{
"templateId": "memex",
"name": "Memex",
@@ -3658,17 +3526,6 @@
}
]
},
{
"templateId": "minio",
"name": "Minio",
"issues": [
{
"category": "generic-description",
"severity": "medium",
"message": "Description matches generic pattern: \"Self-hosted Minio deployment via Docker\""
}
]
},
{
"templateId": "minisatip",
"name": "Minisatip",
@@ -3757,17 +3614,6 @@
}
]
},
{
"templateId": "monica",
"name": "Monica",
"issues": [
{
"category": "generic-description",
"severity": "medium",
"message": "Description matches generic pattern: \"Self-hosted Monica deployment via Docker\""
}
]
},
{
"templateId": "moodle",
"name": "Moodle",
@@ -3966,17 +3812,6 @@
}
]
},
{
"templateId": "nginx",
"name": "Nginx",
"issues": [
{
"category": "generic-description",
"severity": "medium",
"message": "Description matches generic pattern: \"Self-hosted Nginx deployment via Docker\""
}
]
},
{
"templateId": "nginx-proxy-manager",
"name": "Nginx Proxy Manager",
@@ -4582,17 +4417,6 @@
}
]
},
{
"templateId": "phpmyadmin",
"name": "Phpmyadmin",
"issues": [
{
"category": "generic-description",
"severity": "medium",
"message": "Description matches generic pattern: \"Self-hosted Phpmyadmin deployment via Docker\""
}
]
},
{
"templateId": "picsur",
"name": "Picsur",
@@ -4846,17 +4670,6 @@
}
]
},
{
"templateId": "prometheus",
"name": "Prometheus",
"issues": [
{
"category": "generic-description",
"severity": "medium",
"message": "Description matches generic pattern: \"Self-hosted Prometheus deployment via Docker\""
}
]
},
{
"templateId": "promptfoo",
"name": "Promptfoo",
@@ -5011,17 +4824,6 @@
}
]
},
{
"templateId": "rabbitmq",
"name": "Rabbitmq",
"issues": [
{
"category": "generic-description",
"severity": "medium",
"message": "Description matches generic pattern: \"Self-hosted Rabbitmq deployment via Docker\""
}
]
},
{
"templateId": "radarr",
"name": "Radarr",
@@ -5924,17 +5726,6 @@
}
]
},
{
"templateId": "teamspeak",
"name": "Teamspeak",
"issues": [
{
"category": "generic-description",
"severity": "medium",
"message": "Description matches generic pattern: \"Self-hosted Teamspeak deployment via Docker\""
}
]
},
{
"templateId": "telepresence",
"name": "Telepresence",
@@ -6210,17 +6001,6 @@
}
]
},
{
"templateId": "ubuntu",
"name": "Ubuntu",
"issues": [
{
"category": "generic-description",
"severity": "medium",
"message": "Description matches generic pattern: \"Self-hosted Ubuntu deployment via Docker\""
}
]
},
{
"templateId": "umap",
"name": "Umap",
@@ -6639,17 +6419,6 @@
}
]
},
{
"templateId": "wordpress",
"name": "Wordpress",
"issues": [
{
"category": "generic-description",
"severity": "medium",
"message": "Description matches generic pattern: \"Self-hosted Wordpress deployment via Docker\""
}
]
},
{
"templateId": "writefreely",
"name": "Writefreely",
@@ -6672,17 +6441,6 @@
}
]
},
{
"templateId": "xwiki",
"name": "Xwiki",
"issues": [
{
"category": "generic-description",
"severity": "medium",
"message": "Description matches generic pattern: \"Self-hosted Xwiki deployment via Docker\""
}
]
},
{
"templateId": "yacht",
"name": "Yacht",
@@ -6804,17 +6562,6 @@
}
]
},
{
"templateId": "znc",
"name": "Znc",
"issues": [
{
"category": "generic-description",
"severity": "medium",
"message": "Description matches generic pattern: \"Self-hosted Znc deployment via Docker\""
}
]
},
{
"templateId": "zoraxy",
"name": "Zoraxy",
@@ -1,6 +1,6 @@
{
"meta": {
"auditedAt": "2026-05-07T21:44:16.687Z",
"auditedAt": "2026-05-08T02:34:22.740Z",
"totalTemplates": 842,
"processed": 804,
"skipped": 38
+89 -278
View File
@@ -1,288 +1,11 @@
{
"meta": {
"auditedAt": "2026-05-07T21:44:16.687Z",
"auditedAt": "2026-05-08T02:34:22.740Z",
"totalTemplates": 842,
"processed": 804,
"skipped": 38
},
"data": [
{
"templateId": "chatwoot",
"name": "Chatwoot",
"issues": [
{
"category": "single-tag",
"severity": "medium",
"message": "Only 1 tag: \"multi-service\". Consider adding more descriptive tags."
}
]
},
{
"templateId": "cog",
"name": "Cog",
"issues": [
{
"category": "single-tag",
"severity": "medium",
"message": "Only 1 tag: \"ai\". Consider adding more descriptive tags."
},
{
"category": "short-tag",
"severity": "low",
"message": "Tag \"ai\" is very short"
}
]
},
{
"templateId": "docker-ipsec-vpn",
"name": "Docker IPSec VPN Server",
"issues": [
{
"category": "single-tag",
"severity": "medium",
"message": "Only 1 tag: \"security\". Consider adding more descriptive tags."
}
]
},
{
"templateId": "grype",
"name": "Grype",
"issues": [
{
"category": "single-tag",
"severity": "medium",
"message": "Only 1 tag: \"security\". Consider adding more descriptive tags."
}
]
},
{
"templateId": "insforge",
"name": "InsForge",
"issues": [
{
"category": "single-tag",
"severity": "medium",
"message": "Only 1 tag: \"ai\". Consider adding more descriptive tags."
},
{
"category": "short-tag",
"severity": "low",
"message": "Tag \"ai\" is very short"
}
]
},
{
"templateId": "joern",
"name": "Joern",
"issues": [
{
"category": "single-tag",
"severity": "medium",
"message": "Only 1 tag: \"security\". Consider adding more descriptive tags."
}
]
},
{
"templateId": "matrix-server",
"name": "Matrix Server",
"issues": [
{
"category": "single-tag",
"severity": "medium",
"message": "Only 1 tag: \"chat\". Consider adding more descriptive tags."
}
]
},
{
"templateId": "mirotalksfu",
"name": "MiroTalk SFU",
"issues": [
{
"category": "single-tag",
"severity": "medium",
"message": "Only 1 tag: \"chat\". Consider adding more descriptive tags."
}
]
},
{
"templateId": "mlflow",
"name": "MLflow",
"issues": [
{
"category": "single-tag",
"severity": "medium",
"message": "Only 1 tag: \"ai\". Consider adding more descriptive tags."
},
{
"category": "short-tag",
"severity": "low",
"message": "Tag \"ai\" is very short"
}
]
},
{
"templateId": "nginx-ui",
"name": "Nginx UI",
"issues": [
{
"category": "single-tag",
"severity": "medium",
"message": "Only 1 tag: \"devops\". Consider adding more descriptive tags."
}
]
},
{
"templateId": "ory-hydra",
"name": "Ory Hydra — OAuth 2.0 & OpenID Connect Provider",
"issues": [
{
"category": "single-tag",
"severity": "medium",
"message": "Only 1 tag: \"security\". Consider adding more descriptive tags."
}
]
},
{
"templateId": "redink",
"name": "RedInk",
"issues": [
{
"category": "single-tag",
"severity": "medium",
"message": "Only 1 tag: \"ai\". Consider adding more descriptive tags."
},
{
"category": "short-tag",
"severity": "low",
"message": "Tag \"ai\" is very short"
}
]
},
{
"templateId": "sftpgo",
"name": "SFTPGo",
"issues": [
{
"category": "single-tag",
"severity": "medium",
"message": "Only 1 tag: \"storage\". Consider adding more descriptive tags."
}
]
},
{
"templateId": "streamer-sales",
"name": "Streamer Sales",
"issues": [
{
"category": "single-tag",
"severity": "medium",
"message": "Only 1 tag: \"ai\". Consider adding more descriptive tags."
},
{
"category": "short-tag",
"severity": "low",
"message": "Tag \"ai\" is very short"
}
]
},
{
"templateId": "suna",
"name": "Suna",
"issues": [
{
"category": "single-tag",
"severity": "medium",
"message": "Only 1 tag: \"ai\". Consider adding more descriptive tags."
},
{
"category": "short-tag",
"severity": "low",
"message": "Tag \"ai\" is very short"
}
]
},
{
"templateId": "test-app",
"name": "Test Application",
"issues": [
{
"category": "single-tag",
"severity": "medium",
"message": "Only 1 tag: \"reference\". Consider adding more descriptive tags."
}
]
},
{
"templateId": "tpotce",
"name": "T-Pot — All-in-One Multi Honeypot Platform",
"issues": [
{
"category": "single-tag",
"severity": "medium",
"message": "Only 1 tag: \"security\". Consider adding more descriptive tags."
}
]
},
{
"templateId": "trendradar",
"name": "TrendRadar",
"issues": [
{
"category": "single-tag",
"severity": "medium",
"message": "Only 1 tag: \"ai\". Consider adding more descriptive tags."
},
{
"category": "short-tag",
"severity": "low",
"message": "Tag \"ai\" is very short"
}
]
},
{
"templateId": "trivy",
"name": "Trivy",
"issues": [
{
"category": "single-tag",
"severity": "medium",
"message": "Only 1 tag: \"security\". Consider adding more descriptive tags."
}
]
},
{
"templateId": "ufw-docker",
"name": "UFW Docker",
"issues": [
{
"category": "single-tag",
"severity": "medium",
"message": "Only 1 tag: \"security\". Consider adding more descriptive tags."
}
]
},
{
"templateId": "wgcloud",
"name": "WGCloud",
"issues": [
{
"category": "single-tag",
"severity": "medium",
"message": "Only 1 tag: \"monitoring\". Consider adding more descriptive tags."
}
]
},
{
"templateId": "xiaomusic",
"name": "Xiaomusic",
"issues": [
{
"category": "single-tag",
"severity": "medium",
"message": "Only 1 tag: \"llm\". Consider adding more descriptive tags."
}
]
},
{
"templateId": "agent-zero",
"name": "Agent Zero",
@@ -404,6 +127,17 @@
}
]
},
{
"templateId": "cog",
"name": "Cog",
"issues": [
{
"category": "short-tag",
"severity": "low",
"message": "Tag \"ai\" is very short"
}
]
},
{
"templateId": "crewai",
"name": "CrewAI",
@@ -602,6 +336,17 @@
}
]
},
{
"templateId": "insforge",
"name": "InsForge",
"issues": [
{
"category": "short-tag",
"severity": "low",
"message": "Tag \"ai\" is very short"
}
]
},
{
"templateId": "joomla",
"name": "Joomla",
@@ -789,6 +534,17 @@
}
]
},
{
"templateId": "mlflow",
"name": "MLflow",
"issues": [
{
"category": "short-tag",
"severity": "low",
"message": "Tag \"ai\" is very short"
}
]
},
{
"templateId": "musicbrainz",
"name": "Musicbrainz",
@@ -976,6 +732,17 @@
}
]
},
{
"templateId": "redink",
"name": "RedInk",
"issues": [
{
"category": "short-tag",
"severity": "low",
"message": "Tag \"ai\" is very short"
}
]
},
{
"templateId": "rowboat",
"name": "Rowboat",
@@ -1009,6 +776,28 @@
}
]
},
{
"templateId": "streamer-sales",
"name": "Streamer Sales",
"issues": [
{
"category": "short-tag",
"severity": "low",
"message": "Tag \"ai\" is very short"
}
]
},
{
"templateId": "suna",
"name": "Suna",
"issues": [
{
"category": "short-tag",
"severity": "low",
"message": "Tag \"ai\" is very short"
}
]
},
{
"templateId": "swe-agent",
"name": "SWE-agent",
@@ -1064,6 +853,17 @@
}
]
},
{
"templateId": "trendradar",
"name": "TrendRadar",
"issues": [
{
"category": "short-tag",
"severity": "low",
"message": "Tag \"ai\" is very short"
}
]
},
{
"templateId": "vane",
"name": "Vane",
@@ -1097,6 +897,17 @@
}
]
},
{
"templateId": "xiaomusic",
"name": "Xiaomusic",
"issues": [
{
"category": "short-tag",
"severity": "low",
"message": "Tag \"ai\" is very short"
}
]
},
{
"templateId": "yuxi",
"name": "Yuxi",
+1 -530
View File
@@ -1,6 +1,6 @@
{
"meta": {
"auditedAt": "2026-05-07T21:44:16.687Z",
"auditedAt": "2026-05-08T02:34:22.740Z",
"totalTemplates": 842,
"processed": 804,
"skipped": 38
@@ -17,22 +17,6 @@
}
]
},
{
"templateId": "adminer",
"name": "Adminer",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
},
{
"category": "few-links",
"severity": "low",
"message": "Only 2 markdown links found in README"
}
]
},
{
"templateId": "agent-zero",
"name": "Agent Zero",
@@ -66,22 +50,6 @@
}
]
},
{
"templateId": "backdrop",
"name": "Backdrop",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
},
{
"category": "few-links",
"severity": "low",
"message": "Only 2 markdown links found in README"
}
]
},
{
"templateId": "bisheng",
"name": "Bishêng",
@@ -93,22 +61,6 @@
}
]
},
{
"templateId": "caddy",
"name": "Caddy",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
},
{
"category": "few-links",
"severity": "low",
"message": "Only 2 markdown links found in README"
}
]
},
{
"templateId": "cc-gateway",
"name": "CC Gateway",
@@ -164,38 +116,6 @@
}
]
},
{
"templateId": "couchdb",
"name": "Couchdb",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
},
{
"category": "few-links",
"severity": "low",
"message": "Only 2 markdown links found in README"
}
]
},
{
"templateId": "databend",
"name": "Databend",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
},
{
"category": "few-links",
"severity": "low",
"message": "Only 1 markdown links found in README"
}
]
},
{
"templateId": "dbeaver",
"name": "DBeaver",
@@ -240,38 +160,6 @@
}
]
},
{
"templateId": "docsgpt",
"name": "DocsGPT",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
},
{
"category": "few-links",
"severity": "low",
"message": "Only 2 markdown links found in README"
}
]
},
{
"templateId": "drupal",
"name": "Drupal",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
},
{
"category": "few-links",
"severity": "low",
"message": "Only 2 markdown links found in README"
}
]
},
{
"templateId": "easyappointments",
"name": "easyappointments",
@@ -283,22 +171,6 @@
}
]
},
{
"templateId": "elasticsearch",
"name": "Elasticsearch",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
},
{
"category": "few-links",
"severity": "low",
"message": "Only 2 markdown links found in README"
}
]
},
{
"templateId": "elasticsearch7",
"name": "elasticsearch7",
@@ -343,22 +215,6 @@
}
]
},
{
"templateId": "friendica",
"name": "Friendica",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
},
{
"category": "few-links",
"severity": "low",
"message": "Only 2 markdown links found in README"
}
]
},
{
"templateId": "funkwhale",
"name": "Funkwhale",
@@ -370,38 +226,6 @@
}
]
},
{
"templateId": "ghost",
"name": "Ghost",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
},
{
"category": "few-links",
"severity": "low",
"message": "Only 2 markdown links found in README"
}
]
},
{
"templateId": "grafana",
"name": "Grafana",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
},
{
"category": "few-links",
"severity": "low",
"message": "Only 2 markdown links found in README"
}
]
},
{
"templateId": "grype",
"name": "Grype",
@@ -490,22 +314,6 @@
}
]
},
{
"templateId": "joomla",
"name": "Joomla",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
},
{
"category": "few-links",
"severity": "low",
"message": "Only 2 markdown links found in README"
}
]
},
{
"templateId": "kag",
"name": "KAG",
@@ -594,38 +402,6 @@
}
]
},
{
"templateId": "matomo",
"name": "Matomo",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
},
{
"category": "few-links",
"severity": "low",
"message": "Only 2 markdown links found in README"
}
]
},
{
"templateId": "mediawiki",
"name": "Mediawiki",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
},
{
"category": "few-links",
"severity": "low",
"message": "Only 2 markdown links found in README"
}
]
},
{
"templateId": "meilisearch",
"name": "Meilisearch",
@@ -670,22 +446,6 @@
}
]
},
{
"templateId": "minio",
"name": "Minio",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
},
{
"category": "few-links",
"severity": "low",
"message": "Only 2 markdown links found in README"
}
]
},
{
"templateId": "mlflow",
"name": "MLflow",
@@ -708,22 +468,6 @@
}
]
},
{
"templateId": "monica",
"name": "Monica",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
},
{
"category": "few-links",
"severity": "low",
"message": "Only 2 markdown links found in README"
}
]
},
{
"templateId": "motioneye",
"name": "motioneye",
@@ -757,38 +501,6 @@
}
]
},
{
"templateId": "nextcloud",
"name": "Nextcloud",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
},
{
"category": "few-links",
"severity": "low",
"message": "Only 2 markdown links found in README"
}
]
},
{
"templateId": "nginx",
"name": "Nginx",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
},
{
"category": "few-links",
"severity": "low",
"message": "Only 2 markdown links found in README"
}
]
},
{
"templateId": "node-exporter",
"name": "node_exporter",
@@ -899,22 +611,6 @@
}
]
},
{
"templateId": "phpmyadmin",
"name": "Phpmyadmin",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
},
{
"category": "few-links",
"severity": "low",
"message": "Only 2 markdown links found in README"
}
]
},
{
"templateId": "plexe",
"name": "Plexe",
@@ -926,22 +622,6 @@
}
]
},
{
"templateId": "prometheus",
"name": "Prometheus",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
},
{
"category": "few-links",
"severity": "low",
"message": "Only 2 markdown links found in README"
}
]
},
{
"templateId": "quivr",
"name": "Quivr",
@@ -953,22 +633,6 @@
}
]
},
{
"templateId": "rabbitmq",
"name": "Rabbitmq",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
},
{
"category": "few-links",
"severity": "low",
"message": "Only 2 markdown links found in README"
}
]
},
{
"templateId": "rd-agent",
"name": "RD-Agent",
@@ -980,22 +644,6 @@
}
]
},
{
"templateId": "redis",
"name": "Redis",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
},
{
"category": "few-links",
"severity": "low",
"message": "Only 2 markdown links found in README"
}
]
},
{
"templateId": "rocketchat",
"name": "rocketchat",
@@ -1095,54 +743,6 @@
}
]
},
{
"templateId": "teamspeak",
"name": "Teamspeak",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
},
{
"category": "few-links",
"severity": "low",
"message": "Only 2 markdown links found in README"
}
]
},
{
"templateId": "tensorzero",
"name": "TensorZero",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
},
{
"category": "few-links",
"severity": "low",
"message": "Only 2 markdown links found in README"
}
]
},
{
"templateId": "test-app",
"name": "Test Application",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
},
{
"category": "few-links",
"severity": "low",
"message": "Only 2 markdown links found in README"
}
]
},
{
"templateId": "tidb",
"name": "TiDB",
@@ -1198,38 +798,6 @@
}
]
},
{
"templateId": "typesense",
"name": "TypeSense",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
},
{
"category": "few-links",
"severity": "low",
"message": "Only 2 markdown links found in README"
}
]
},
{
"templateId": "ubuntu",
"name": "Ubuntu",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
},
{
"category": "few-links",
"severity": "low",
"message": "Only 2 markdown links found in README"
}
]
},
{
"templateId": "ufw-docker",
"name": "UFW Docker",
@@ -1263,22 +831,6 @@
}
]
},
{
"templateId": "weaviate",
"name": "Weaviate",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
},
{
"category": "few-links",
"severity": "low",
"message": "Only 1 markdown links found in README"
}
]
},
{
"templateId": "wgcloud",
"name": "WGCloud",
@@ -1290,22 +842,6 @@
}
]
},
{
"templateId": "wordpress",
"name": "Wordpress",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
},
{
"category": "few-links",
"severity": "low",
"message": "Only 2 markdown links found in README"
}
]
},
{
"templateId": "worldmonitor",
"name": "WorldMonitor",
@@ -1327,71 +863,6 @@
"message": "Only 2 markdown links found in README"
}
]
},
{
"templateId": "xwiki",
"name": "Xwiki",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
},
{
"category": "few-links",
"severity": "low",
"message": "Only 2 markdown links found in README"
}
]
},
{
"templateId": "znc",
"name": "Znc",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
},
{
"category": "few-links",
"severity": "low",
"message": "Only 2 markdown links found in README"
}
]
},
{
"templateId": "dokploy",
"name": "Dokploy",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
}
]
},
{
"templateId": "harness",
"name": "Harness",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
}
]
},
{
"templateId": "parseable",
"name": "Parseable",
"issues": [
{
"category": "no-upstream-link",
"severity": "high",
"message": "No GitHub project link or Project Homepage section found in README"
}
]
}
]
}
+184
View File
@@ -0,0 +1,184 @@
#!/usr/bin/env node
/**
* fix-tags.js — Batch tag-correction script for single-tag templates
*
* Reads scripts/audit-output/tag-issues.json, identifies all single-tag
* entries (22 templates), and adds 1-3 appropriate additional tags to
* each template's arcane.json file.
*
* Usage:
* node scripts/fix-tags.js # apply corrections
* node scripts/fix-tags.js --dry-run # print planned corrections only
*
* Exit code: 0 on success, non-zero on error
*/
'use strict';
const fs = require('fs');
const path = require('path');
// ── Paths ──────────────────────────────────────────────────────────────
const ROOT = path.resolve(__dirname, '..');
const ISSUES_FILE = path.join(__dirname, 'audit-output', 'tag-issues.json');
// ── Tag correction map ─────────────────────────────────────────────────
// Maps templateId to array of additional tags (from the existing 52-tag taxonomy)
// Derived from the task plan specification.
const CORRECTIONS = {
'chatwoot': ['communication'],
'cog': ['devops', 'tools'],
'docker-ipsec-vpn': ['infrastructure', 'tools'],
'grype': ['devops', 'tools'],
'insforge': ['tools', 'media'],
'joern': ['tools', 'research'],
'matrix-server': ['communication', 'infrastructure'],
'mirotalksfu': ['communication', 'tools'],
'mlflow': ['tools', 'workflow'],
'nginx-ui': ['proxy', 'web'],
'ory-hydra': ['authentication', 'identity', 'api'],
'redink': ['tools'],
'sftpgo': ['tools', 'security'],
'streamer-sales': ['e-commerce', 'automation'],
'suna': ['tools', 'automation'],
'test-app': ['tools'],
'tpotce': ['monitoring', 'infrastructure'],
'trendradar': ['analytics', 'monitoring'],
'trivy': ['devops', 'tools'],
'ufw-docker': ['infrastructure', 'tools'],
'wgcloud': ['devops', 'infrastructure'],
'xiaomusic': ['ai', 'automation', 'entertainment'],
};
// ── Helpers ────────────────────────────────────────────────────────────
function loadJSON(filePath) {
try {
return JSON.parse(fs.readFileSync(filePath, 'utf-8'));
} catch (err) {
console.error(`ERROR: Could not read or parse "${filePath}": ${err.message}`);
process.exit(1);
}
}
/**
* Deduplicate tags: return tags from `addTags` that are not already in `existingTags`.
* Comparison is case-insensitive but the added tags use the taxonomy casing.
*/
function deduplicateTags(existingTags, addTags) {
const existingLower = (existingTags || []).map(t => t.toLowerCase());
return addTags.filter(t => !existingLower.includes(t.toLowerCase()));
}
/**
* Load a template's arcane.json, add tags, and write back.
* Returns { templateId, name, oldTags, newTags } for the summary.
*/
function fixTemplate(templateId, addTags, isDryRun) {
const templateDir = path.join(ROOT, 'templates', templateId);
const arcanePath = path.join(templateDir, 'arcane.json');
if (!fs.existsSync(arcanePath)) {
console.error(`ERROR: arcane.json not found at "${arcanePath}"`);
process.exit(1);
}
let arcane;
try {
arcane = JSON.parse(fs.readFileSync(arcanePath, 'utf-8'));
} catch (err) {
console.error(`ERROR: Malformed arcane.json at "${arcanePath}": ${err.message}`);
process.exit(1);
}
const oldTags = Array.isArray(arcane.tags) ? [...arcane.tags] : [];
const newTagsToAdd = deduplicateTags(oldTags, addTags);
if (newTagsToAdd.length === 0) {
return { templateId, name: arcane.name || templateId, oldTags, newTags: oldTags, unchanged: true };
}
if (!isDryRun) {
arcane.tags = [...oldTags, ...newTagsToAdd];
fs.writeFileSync(arcanePath, JSON.stringify(arcane, null, 2) + '\n', 'utf-8');
}
return {
templateId,
name: arcane.name || templateId,
oldTags,
newTags: [...oldTags, ...newTagsToAdd],
added: newTagsToAdd,
unchanged: false,
};
}
// ── Main ───────────────────────────────────────────────────────────────
function main() {
const isDryRun = process.argv.includes('--dry-run');
if (isDryRun) {
console.log('[DRY RUN] No files will be modified.\n');
} else {
console.log('Applying tag corrections...\n');
}
const issues = loadJSON(ISSUES_FILE);
const data = issues.data || [];
// Filter for single-tag entries only
const singleTagEntries = data.filter(item =>
item.issues && item.issues.some(i => i.category === 'single-tag')
);
if (singleTagEntries.length === 0) {
console.log('No single-tag entries found. Nothing to fix.');
process.exit(0);
}
console.log(`Found ${singleTagEntries.length} single-tag template(s) to fix.\n`);
let fixedCount = 0;
let unchangedCount = 0;
const results = [];
for (const entry of singleTagEntries) {
const tid = entry.templateId;
const addTags = CORRECTIONS[tid];
if (!addTags) {
console.warn(` ⚠ No correction mapping for "${tid}" (${entry.name}). Skipping.`);
continue;
}
const result = fixTemplate(tid, addTags, isDryRun);
results.push(result);
if (result.unchanged) {
unchangedCount++;
const existingTag = result.oldTags[0] || '(none)';
console.log(` ${isDryRun ? ' ' : '✓'} ${result.name.padEnd(35)} [${existingTag}] — already has all suggested tags, no change needed`);
} else {
fixedCount++;
const oldStr = result.oldTags.join(', ');
const newStr = result.newTags.join(', ');
const addedStr = result.added.join(', ');
console.log(` ${isDryRun ? ' ' : '✓'} ${result.name.padEnd(35)} [${oldStr}] → [${newStr}] (+${addedStr})`);
}
}
// Summary
console.log('');
if (isDryRun) {
console.log(`[DRY RUN] Would fix ${fixedCount} template(s) (${unchangedCount} already up-to-date).`);
} else {
console.log(`Applied ${fixedCount} tag correction(s). (${unchangedCount} already up-to-date.)`);
}
process.exit(0);
}
main();
+1
View File
@@ -44,6 +44,7 @@ function badgeHtml(tag) {
// Section name → camelCase key mapping (exact match and prefix match for variants)
const SECTION_MAP = {
'Project Overview': 'projectOverview',
'Project Homepage': 'upstream',
'Architecture': 'architecture',
'Quick Start': 'quickStart',
'Configuration': 'configuration',
+654
View File
@@ -0,0 +1,654 @@
#!/usr/bin/env node
/**
* rewrite-readme.js — README.md Generator for Arcane templates
*
* Reads a template's docker-compose.yml, .env.example, and arcane.json
* and generates a complete README.md with real upstream links, accurate
* env var documentation, architecture table, troubleshooting, backup
* and recovery sections, and a links section.
*
* Also updates arcane.json description to remove the generic
* "Self-hosted X deployment via Docker" pattern.
*
* Usage:
* node scripts/rewrite-readme.js --template 2fauth --upstream-url https://github.com/2fauth/2fauth
* node scripts/rewrite-readme.js --all --upstream-url-file ./upstream-map.json
*
* Upstream URL file format (JSON):
* { "templateId": "https://github.com/org/repo", ... }
*/
'use strict';
const fs = require('fs');
const path = require('path');
// ── Argument parsing ──────────────────────────────────────────────────────
function parseArgs() {
const args = process.argv.slice(2);
const opts = {};
for (let i = 0; i < args.length; i++) {
switch (args[i]) {
case '--template':
opts.template = args[++i];
break;
case '--upstream-url':
opts.upstreamUrl = args[++i];
break;
case '--upstream-name':
opts.upstreamName = args[++i];
break;
case '--all':
opts.all = true;
break;
case '--upstream-url-file':
opts.upstreamUrlFile = args[++i];
break;
case '--help':
case '-h':
opts.help = true;
break;
}
}
return opts;
}
// ── Template file readers ─────────────────────────────────────────────────
const TEMPLATES_DIR = path.join(__dirname, '..', 'templates');
function readJson(filePath) {
try {
return JSON.parse(fs.readFileSync(filePath, 'utf-8'));
} catch {
return null;
}
}
function parseCompose(content) {
// Normalize line endings
content = content.replace(/\r\n/g, '\n');
// Extract only the services: section
const svcStart = content.search(/^services:\s*$/m);
if (svcStart < 0) {
return { services: [], volumes: [] };
}
// Find the next top-level key (line starting with word char + colon at column 0)
const rest = content.slice(svcStart + 1); // skip the services: line
const nextKey = rest.search(/\n\w[\w_-]*:\s*$/m);
const svcEnd = nextKey > 0 ? svcStart + 1 + nextKey : content.length;
const svcSection = content.slice(svcStart, svcEnd);
const services = [];
// Find all service blocks within the services section
// Each service starts with " name:" at 2-space indent
const serviceBlockRegex = /^ (\w[\w-]*):\s*$/gm;
let svcMatch;
while ((svcMatch = serviceBlockRegex.exec(svcSection)) !== null) {
const serviceName = svcMatch[1];
const blockStart = svcMatch.index;
const afterName = svcSection.slice(blockStart + svcMatch[0].length);
// Find next service at same indent level, or end of section
const nextMatch = afterName.search(/\n \w[\w-]*:\s*$/);
const blockEnd = nextMatch > 0 ? blockStart + svcMatch[0].length + nextMatch : svcSection.length;
const block = svcSection.slice(blockStart, blockEnd);
const svc = { name: serviceName };
// Image
const imgMatch = block.match(/^\s+image:\s+(.+)$/m);
svc.image = imgMatch ? imgMatch[1].trim() : '';
// Ports with env var defaults
const portMatches = block.matchAll(/\$\{(\w[\w0-9_]*):-(\d+)\}:\d+/g);
svc.ports = [];
for (const pm of portMatches) {
svc.ports.push({ var: pm[1], default: pm[2] });
}
// Ports without env var (direct)
const directPorts = block.matchAll(/^\s+-\s+"?\d+:\d+"?$/gm);
for (const dp of directPorts) {
const p = dp[0].match(/"?(\d+):\d+/);
if (p && svc.ports.length === 0) {
svc.ports.push({ var: 'PORT', default: p[1] });
}
}
// Volumes
const volMatches = block.matchAll(/^\s+-\s+(\w[\w_]*):\/.*$/gm);
svc.volumes = [];
for (const vm of volMatches) {
svc.volumes.push(vm[1]);
}
// Health check
const hcTestMatch = block.match(/test:\s*\[.*?\]/s);
const hcInterval = block.match(/interval:\s*(\d+)s/);
const hcRetries = block.match(/retries:\s*(\d+)/);
const hcStartPeriod = block.match(/start_period:\s*(\d+)s/);
svc.healthCheck = hcTestMatch ? {
test: hcTestMatch[0],
interval: hcInterval ? hcInterval[1] : '30',
retries: hcRetries ? hcRetries[1] : '3',
startPeriod: hcStartPeriod ? hcStartPeriod[1] : '30'
} : null;
services.push(svc);
}
// Extract volumes section
const volumes = [];
const volSection = content.match(/^volumes:\s*\n((?: \w[\w_-]*:.*\n?)*)/m);
if (volSection) {
const volLines = volSection[1].split('\n').filter(l => l.trim());
for (const vl of volLines) {
const vn = vl.match(/^ (\w[\w_-]*):/);
if (vn) volumes.push(vn[1]);
}
}
return { services, volumes };
}
function parseEnvExample(content) {
const vars = [];
const lines = content.split('\n');
let currentComment = '';
for (const line of lines) {
const trimmed = line.trim();
if (trimmed.startsWith('#')) {
const comment = trimmed.replace(/^#\s*/, '');
if (comment.toLowerCase().startsWith('--') || comment.toLowerCase().startsWith('copy') || comment === '') continue;
currentComment = comment;
continue;
}
const varMatch = trimmed.match(/^(\w[\w0-9_]*)=(.+)?$/);
if (varMatch) {
vars.push({
var: varMatch[1],
default: varMatch[2] || '',
comment: currentComment
});
currentComment = '';
}
}
return vars;
}
// ── Name helpers ──────────────────────────────────────────────────────────
function capitalize(name) {
return name.charAt(0).toUpperCase() + name.slice(1);
}
function inferServicePurpose(name) {
const nameLower = name.toLowerCase().replace(/[_-]/g, ' ');
if (nameLower.includes('db') || nameLower.includes('database') || nameLower.includes('postgres') || nameLower.includes('mysql') || nameLower.includes('mariadb')) return 'Database storage';
if (nameLower.includes('redis') || nameLower.includes('cache')) return 'Caching layer';
if (nameLower.includes('proxy') || nameLower.includes('nginx') || nameLower.includes('caddy')) return 'Reverse proxy / web server';
if (nameLower.includes('queue') || nameLower.includes('worker')) return 'Background job processor';
return 'Main application service';
}
function inferDefaultDescription(templateId, name) {
const nameLower = (name || templateId).toLowerCase();
// Map of well-known services to descriptions
const knownDescs = {
'adminer': 'Lightweight web-based database management tool (MySQL, PostgreSQL, SQLite, and more)',
'backdrop': 'Open-source content management system — a fork of Drupal focused on simplicity and ease of use',
'caddy': 'Modern, automatic-HTTPS web server with a focus on simplicity and security',
'couchdb': 'Open-source document-oriented NoSQL database with multi-master replication',
'databend': 'Cloud-native data warehouse with instant elasticity and real-time query capabilities',
'docsgpt': 'AI-powered documentation assistant — chat with your documentation using LLMs',
'dokploy': 'Self-hosted deployment platform for applications and databases',
'drupal': 'Powerful open-source content management framework for building websites and applications',
'elasticsearch': 'Distributed search and analytics engine for all types of data',
'friendica': 'Decentralized social networking platform in the Fediverse ecosystem',
'ghost': 'Modern publishing platform for newsletters, blogs, and membership sites',
'grafana': 'Open-source analytics and interactive visualization web application for infrastructure monitoring',
'harness': 'AI-native software delivery platform for CI/CD, feature flags, and chaos engineering',
'joomla': 'Award-winning open-source content management system for building websites',
'matomo': 'Open-source web analytics platform — a privacy-friendly alternative to Google Analytics',
'mediawiki': 'The wiki engine that powers Wikipedia — collaborative documentation platform',
'minio': 'High-performance, S3-compatible object storage for AI and data workloads',
'monica': 'Open-source personal relationship manager (PRM) for managing contacts',
'nextcloud': 'Self-hosted productivity platform — files, calendar, contacts, and collaboration',
'nginx': 'High-performance HTTP server, reverse proxy, and load balancer',
'parseable': 'Observability platform for log analytics and event data at scale',
'phpmyadmin': 'Popular web-based MySQL and MariaDB database administration tool',
'prometheus': 'Open-source systems monitoring and alerting toolkit with a dimensional data model',
'rabbitmq': 'Open-source message broker supporting multiple messaging protocols',
'redis': 'In-memory data structure store — database, cache, and message broker',
'teamspeak': 'Voice communication platform for gamers and communities',
'tensorzero': 'Open platform for AI agent evaluation, testing, and monitoring',
'test-app': 'Test template for verifying the Arcane build-registry script',
'typesense': 'Open-source, typo-tolerant search engine with instant results',
'ubuntu': 'Ubuntu Linux container — base operating system for development and testing',
'weaviate': 'Open-source vector database for AI-powered semantic search applications',
'wordpress': 'World\'s most popular content management system — powers 40%+ of the web',
'xwiki': 'Advanced open-source enterprise wiki and collaboration platform',
'znc': 'IRC bouncer — stays connected to IRC networks and delivers messages when you reconnect'
};
return knownDescs[templateId] || `${name} — self-hosted via Docker Compose`;
}
// ── README generator ──────────────────────────────────────────────────────
function generateReadme(templateId, name, upstreamUrl, upstreamName, composeData, envVars) {
const { services, volumes } = composeData;
const projectName = upstreamName || name || capitalize(templateId);
// Description line
const knownShort = {
'adminer': 'Web-based database management tool',
'backdrop': 'Open-source CMS — Drupal fork for simplicity',
'caddy': 'Automatic-HTTPS web server',
'couchdb': 'Document-oriented NoSQL database with replication',
'databend': 'Cloud-native data warehouse',
'docsgpt': 'AI-powered documentation assistant',
'dokploy': 'Self-hosted deployment platform',
'drupal': 'Open-source content management framework',
'elasticsearch': 'Distributed search and analytics engine',
'friendica': 'Decentralized social networking platform',
'ghost': 'Modern publishing platform',
'grafana': 'Open-source analytics and monitoring platform',
'harness': 'AI-native software delivery platform',
'joomla': 'Award-winning CMS',
'matomo': 'Privacy-friendly web analytics',
'mediawiki': 'Collaborative wiki platform',
'minio': 'S3-compatible object storage',
'monica': 'Personal relationship manager',
'nextcloud': 'Self-hosted productivity platform',
'nginx': 'High-performance HTTP server and reverse proxy',
'parseable': 'Observability platform for logs',
'phpmyadmin': 'Web-based MySQL/MariaDB administration',
'prometheus': 'Open-source monitoring and alerting',
'rabbitmq': 'Open-source message broker',
'redis': 'In-memory data store and cache',
'teamspeak': 'Voice communication platform',
'tensorzero': 'AI agent evaluation and monitoring',
'test-app': 'Test scaffold for Arcane build tools',
'typesense': 'Typo-tolerant search engine',
'ubuntu': 'Ubuntu Linux OS container',
'weaviate': 'AI-native vector database',
'wordpress': 'World\'s most popular CMS',
'xwiki': 'Enterprise wiki platform',
'znc': 'IRC bouncer'
};
const subtitle = knownShort[templateId] || `${projectName} — self-hosted via Docker Compose`;
const mainService = services[0] || { name: templateId, image: '', ports: [] };
const defaultPort = mainService.ports.length > 0 ? mainService.ports[0].default : '8080';
const defaultPortVar = mainService.ports.length > 0 ? `$\{${mainService.ports[0].var}}` : '8080';
let sections = [];
// ── Architecture section ──
let archSections = [];
if (services.length > 0) {
let svcTable = '| Service | Image | Purpose |\n|---------|-------|---------|\n';
for (const s of services) {
svcTable += `| \`${s.name}\` | \`${s.image}\` | ${inferServicePurpose(s.name)} |\n`;
}
archSections.push(`### Services\n\n${svcTable}`);
}
if (volumes.length > 0) {
let volTable = '| Volume | Mount | Purpose |\n|--------|-------|---------|\n';
for (const v of volumes) {
volTable += `| \`${v}\` | (varies) | Persistent data storage |\n`;
}
archSections.push(`### Volumes\n\n${volTable}`);
}
// Health check section
if (mainService.healthCheck) {
const hc = mainService.healthCheck;
archSections.push(`### Health Check\n\nThe container runs a health check every ${hc.interval}s (${hc.retries} retries, ${hc.startPeriod}s start period). Docker will report the container as unhealthy if the endpoint fails consistently.\n`);
}
archSections.push(`### Networks\n\nUses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.\n`);
const architectureBlock = archSections.join('\n');
// ── Quick Start ──
const quickStart = `## Quick Start
### 1. Configure environment
\`\`\`bash
cp .env.example .env
# Edit .env with your configuration
\`\`\`
### 2. Start the service
\`\`\`bash
docker compose up -d
\`\`\`
### 3. Verify it's running
\`\`\`bash
docker compose ps
curl -s http://localhost:${defaultPort}/ | head -c 200
\`\`\`
### 4. Access the application
Open [http://localhost:${defaultPort}](http://localhost:${defaultPort}) in your browser.`;
// ── Configuration Reference ──
let envTable = '| Variable | Default | Description |\n|----------|---------|-------------|\n';
if (envVars.length > 0) {
for (const ev of envVars) {
const desc = ev.comment || `${ev.var} configuration value`;
envTable += `| \`${ev.var}\` | \`${ev.default || '—'}\` | ${desc} |\n`;
}
} else {
envTable += '| (none) | — | No environment variables defined |\n';
}
const configBlock = `## Configuration Reference
### Environment Variables
Set these in your \`.env\` file (copy from \`.env.example\`):
${envTable}`;
// ── Troubleshooting ──
const troubleshooting = `## Troubleshooting
### Container won't start
Check the logs for error messages:
\`\`\`bash
docker compose logs
\`\`\`
### Port conflict
If the default port ${defaultPort} is already in use, change it in \`.env\` and restart:
\`\`\`bash
# Edit .env and change to an available port
docker compose down && docker compose up -d
\`\`\`
### Health check shows unhealthy
The container may need more time to start on first run or low-resource hosts. Check the logs:
\`\`\`bash
docker compose logs
\`\`\`
If needed, increase \`start_period\` in \`docker-compose.yml\`.
### Permission errors
Ensure the Docker user has write access to the data volume:
\`\`\`bash
docker compose exec ${mainService.name} ls -la /data 2>/dev/null || echo "Volume directory not accessible"
\`\`\``;
// ── Backup & Recovery ──
const firstVolName = volumes.length > 0 ? volumes[0] : `${templateId}_data`;
const backup = `## Backup & Recovery
### Backup
Stop the service to ensure data consistency, then back up the data volume:
\`\`\`bash
docker compose down
docker run --rm -v ${firstVolName}:/data -v $(pwd):/backup alpine \\
tar czf /backup/${templateId}-backup-\$(date +%Y%m%d).tar.gz -C /data .
docker compose up -d
\`\`\`
### Recovery
\`\`\`bash
docker compose down
docker run --rm -v ${firstVolName}:/data -v $(pwd):/backup alpine \\
tar xzf /backup/${templateId}-backup-YYYYMMDD.tar.gz -C /data
docker compose up -d
\`\`\``;
// ── Links section ──
const linksBlock = `## Project Homepage
- **Project site:** [${projectName}](${upstreamUrl})
- **Docker Image:** \`${mainService.image}\`
- **Issues:** [GitHub Issues](${upstreamUrl.replace(/\/$/, '')}/issues)
## Prerequisites
- Docker Engine 20.10+
- Docker Compose v2.0+
- 512MB+ RAM recommended
- 1GB+ free disk space for data storage`;
// ── Assemble ──
const readme = `# ${projectName}
${subtitle}
## Project Overview
[${projectName}](${upstreamUrl}) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run ${projectName} in a containerized environment with persistent storage, health checks, and environment-based configuration.
## Architecture
${architectureBlock}
${quickStart}
${configBlock}
${troubleshooting}
${backup}
${linksBlock}
`;
return readme;
}
// ── Write README and update arcane.json ──
function writeReadme(templateDir, readmeContent) {
const readmePath = path.join(templateDir, 'README.md');
fs.writeFileSync(readmePath, readmeContent, 'utf-8');
return readmePath;
}
function updateArcaneJson(templateDir, templateId, name, upstreamUrl) {
const arcanePath = path.join(templateDir, 'arcane.json');
const data = readJson(arcanePath);
if (!data) {
console.error(` ⚠ No arcane.json found at ${arcanePath}, skipping description update`);
return;
}
// Update description to remove generic pattern
const newDesc = inferDefaultDescription(templateId, name);
if (data.description !== newDesc) {
const oldDesc = data.description;
data.description = newDesc;
fs.writeFileSync(arcanePath, JSON.stringify(data, null, 2) + '\n', 'utf-8');
console.log(` ✓ Updated description: "${oldDesc.slice(50)}..." → "${newDesc.slice(50)}..."`);
} else {
console.log(` - Description already correct`);
}
}
// ── Self-verification ──
function verifyReadme(readmePath, upstreamUrl, envVarCount) {
const content = fs.readFileSync(readmePath, 'utf-8');
const issues = [];
// Check section count (## headings)
const sectionCount = (content.match(/^## /gm) || []).length;
if (sectionCount < 6) {
issues.push(`Only ${sectionCount} sections (expected >= 6)`);
}
// Check upstream URL is present
if (!content.includes(upstreamUrl)) {
issues.push(`Upstream URL "${upstreamUrl}" not found in README`);
}
// Check env var documentation
if (envVarCount > 0 && content.includes('| `') === false) {
issues.push('No environment variables documented in table');
}
return {
issues,
sectionCount,
pass: issues.length === 0
};
}
// ── Process a single template ──
function processTemplate(templateId, upstreamUrl, upstreamName) {
const templateDir = path.join(TEMPLATES_DIR, templateId);
if (!fs.existsSync(templateDir)) {
console.error(` ✗ Template directory not found: ${templateId}`);
return false;
}
// Read template files
const arcanePath = path.join(templateDir, 'arcane.json');
const composePath = path.join(templateDir, 'docker-compose.yml');
const envPath = path.join(templateDir, '.env.example');
const arcane = readJson(arcanePath);
const name = (arcane && arcane.name) || capitalize(templateId);
if (!fs.existsSync(composePath)) {
console.error(` ✗ docker-compose.yml not found for ${templateId}`);
return false;
}
// Parse compose and env
const composeContent = fs.readFileSync(composePath, 'utf-8');
const composeData = parseCompose(composeContent);
const envContent = fs.existsSync(envPath) ? fs.readFileSync(envPath, 'utf-8') : '';
const envVars = parseEnvExample(envContent);
// Generate README
const upstreamDisplayName = upstreamName || name;
const readmeContent = generateReadme(templateId, name, upstreamUrl, upstreamDisplayName, composeData, envVars);
// Write
const readmePath = writeReadme(templateDir, readmeContent);
console.log(` ✓ README written: ${path.relative(process.cwd(), readmePath)}`);
// Update arcane.json description
updateArcaneJson(templateDir, templateId, name, upstreamUrl);
// Verify
const verification = verifyReadme(readmePath, upstreamUrl, envVars.length);
if (verification.pass) {
console.log(` ✓ Self-verification passed (${verification.sectionCount} sections, ${envVars.length} env vars documented)`);
} else {
console.log(` ⚠ Self-verification issues: ${verification.issues.join(', ')}`);
}
return verification.pass;
}
// ── Main ──
function main() {
const opts = parseArgs();
if (opts.help) {
console.log(`
Usage: node scripts/rewrite-readme.js [options]
Options:
--template <id> Template ID to process (e.g. 2fauth)
--upstream-url <url> Upstream project URL (e.g. https://github.com/2fauth/2fauth)
--upstream-name <name> Upstream project display name (optional)
--all Process all templates from a URL mapping file
--upstream-url-file <path> JSON file with template -> upstream URL mappings
--help Show this help
Examples:
node scripts/rewrite-readme.js --template adminer --upstream-url https://github.com/vrana/adminer --upstream-name Adminer
node scripts/rewrite-readme.js --all --upstream-url-file ./upstream-map.json
`);
process.exit(0);
}
if (opts.all) {
if (!opts.upstreamUrlFile) {
console.error('Error: --all requires --upstream-url-file <path>');
process.exit(1);
}
const urlMap = readJson(opts.upstreamUrlFile);
if (!urlMap) {
console.error(`Error: Could not read upstream URL file: ${opts.upstreamUrlFile}`);
process.exit(1);
}
const ids = Object.keys(urlMap);
console.log(`Processing ${ids.length} templates...\n`);
let passed = 0;
let failed = 0;
for (const id of ids) {
const url = urlMap[id];
// Object value could be a string or { url, name }
const upstreamUrl = typeof url === 'string' ? url : url.url;
const upstreamName = typeof url === 'object' ? url.name : undefined;
console.log(`[${id}]`);
const ok = processTemplate(id, upstreamUrl, upstreamName);
if (ok) passed++;
else failed++;
console.log();
}
console.log(`\nDone. ${passed} succeeded, ${failed} failed.`);
process.exit(failed > 0 ? 1 : 0);
} else if (opts.template && opts.upstreamUrl) {
const ok = processTemplate(opts.template, opts.upstreamUrl, opts.upstreamName);
process.exit(ok ? 0 : 1);
} else {
console.error('Error: Provide --template + --upstream-url, or --all + --upstream-url-file');
console.error('Run with --help for usage.');
process.exit(1);
}
}
main();
+36
View File
@@ -0,0 +1,36 @@
{
"adminer": "https://github.com/vrana/adminer",
"backdrop": "https://github.com/backdrop/backdrop",
"caddy": "https://github.com/caddyserver/caddy",
"couchdb": "https://github.com/apache/couchdb",
"databend": "https://github.com/databendlabs/databend",
"docsgpt": "https://github.com/arc53/DocsGPT",
"dokploy": "https://github.com/Dokploy/dokploy",
"drupal": "https://github.com/drupal/drupal",
"elasticsearch": "https://github.com/elastic/elasticsearch",
"friendica": "https://github.com/friendica/friendica",
"ghost": "https://github.com/TryGhost/Ghost",
"grafana": "https://github.com/grafana/grafana",
"harness": "https://github.com/harness/harness",
"joomla": "https://github.com/joomla/joomla-cms",
"matomo": "https://github.com/matomo-org/matomo",
"mediawiki": "https://github.com/wikimedia/mediawiki",
"minio": "https://github.com/minio/minio",
"monica": "https://github.com/monicahq/monica",
"nextcloud": "https://github.com/nextcloud/server",
"nginx": "https://github.com/nginx/nginx",
"parseable": "https://github.com/parseablehq/parseable",
"phpmyadmin": "https://github.com/phpmyadmin/phpmyadmin",
"prometheus": "https://github.com/prometheus/prometheus",
"rabbitmq": "https://github.com/rabbitmq/rabbitmq-server",
"redis": "https://github.com/redis/redis",
"teamspeak": "https://github.com/TeamSpeak/TeamSpeak-3-server",
"tensorzero": "https://github.com/tensorzero/tensorzero",
"test-app": "https://github.com/arcane/arcane",
"typesense": "https://github.com/typesense/typesense",
"ubuntu": "https://ubuntu.com/",
"weaviate": "https://github.com/weaviate/weaviate",
"wordpress": "https://github.com/WordPress/WordPress",
"xwiki": "https://github.com/xwiki/xwiki-platform",
"znc": "https://github.com/znc/znc"
}
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "2fauth",
"name": "2Fauth",
"description": "Self-hosted 2fauth deployment via Docker",
"description": "2Fauth — self-hosted via Docker Compose",
"version": "1.0.0",
"author": "Arcane",
"tags": [
+86 -57
View File
@@ -1,105 +1,134 @@
# Adminer
Self-hosted Adminer deployment via Docker
Web-based database management tool
This template provides a containerized deployment of [Adminer](adminer) using Docker Compose.
## Project Overview
## Quick Start
1. **Clone and configure:**
```bash
cp .env.example .env
# Edit .env with your configuration
```
2. **Start the service:**
```bash
docker compose up -d
```
3. **Verify it's running:**
```bash
docker compose ps
curl -s http://localhost:8080/ | head -c 200
```
4. **Access the application:**
Open [http://localhost:8080](http://localhost:8080) in your browser.
[Adminer](https://github.com/vrana/adminer) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Adminer in a containerized environment with persistent storage, health checks, and environment-based configuration.
## Architecture
| Component | Image | Purpose |
|-----------|-------|---------|
| `adminer` | docker.io/library/adminer:latest | Main application service |
| `adminer_data` | (volume) | Persistent data storage |
### Services
Services communicate over a shared Docker network. Data is persisted in named volumes.
| Service | Image | Purpose |
|---------|-------|---------|
| `adminer` | `docker.io/library/adminer:latest` | Main application service |
## Configuration
### Volumes
## Configuration
| Volume | Mount | Purpose |
|--------|-------|---------|
| `adminer_data` | (varies) | Persistent data storage |
Environment variables (set in `.env`):
### Health Check
The container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.
### Networks
Uses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.
## Quick Start
### 1. Configure environment
```bash
cp .env.example .env
# Edit .env with your configuration
```
### 2. Start the service
```bash
docker compose up -d
```
### 3. Verify it's running
```bash
docker compose ps
curl -s http://localhost:8080/ | head -c 200
```
### 4. Access the application
Open [http://localhost:8080](http://localhost:8080) in your browser.
## Configuration Reference
### Environment Variables
Set these in your `.env` file (copy from `.env.example`):
| Variable | Default | Description |
|----------|---------|-------------|
| `ADMINER_PORT` | `8080` | Configuration variable |
| `ADMINER_PORT` | `8080` | adminer host port (default: 8080) |
## Troubleshooting
**Container won't start:**
### Container won't start
Check the logs for error messages:
```bash
docker compose logs adminer
docker compose logs
```
**Port conflict:**
Edit `.env` and change `ADMINER_PORT` to an available port, then restart:
### Port conflict
If the default port 8080 is already in use, change it in `.env` and restart:
```bash
# Edit .env and change to an available port
docker compose down && docker compose up -d
```
**Permission errors:**
Ensure the Docker user has write access to the data volume:
### Health check shows unhealthy
The container may need more time to start on first run or low-resource hosts. Check the logs:
```bash
docker compose exec adminer ls -la /data
docker compose logs
```
**Health check failing:**
If needed, increase `start_period` in `docker-compose.yml`.
### Permission errors
Ensure the Docker user has write access to the data volume:
```bash
docker compose ps # Check STATUS column
docker inspect adminer --format='{{json .State.Health}}'
docker compose exec adminer ls -la /data 2>/dev/null || echo "Volume directory not accessible"
```
## Backup & Recovery
**Backup:**
### Backup
Stop the service to ensure data consistency, then back up the data volume:
```bash
# Stop the service
docker compose down
# Backup the data volume
docker run --rm -v adminer_data:/data -v $(pwd):/backup alpine tar czf /backup/adminer-backup-$(date +%Y%m%d).tar.gz /data
# Restart
docker run --rm -v adminer_data:/data -v $(pwd):/backup alpine \
tar czf /backup/adminer-backup-$(date +%Y%m%d).tar.gz -C /data .
docker compose up -d
```
**Restore:**
### Recovery
```bash
docker compose down
docker run --rm -v adminer_data:/data -v $(pwd):/backup alpine sh -c "rm -rf /data/* && tar xzf /backup/adminer-backup.tar.gz -C /"
docker run --rm -v adminer_data:/data -v $(pwd):/backup alpine \
tar xzf /backup/adminer-backup-YYYYMMDD.tar.gz -C /data
docker compose up -d
```
## Links
## Project Homepage
- **Project site:** [Adminer](https://github.com/vrana/adminer)
- **Docker Image:** `docker.io/library/adminer:latest`
- **Issues:** [GitHub Issues](https://github.com/vrana/adminer/issues)
## Prerequisites
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "adminer",
"name": "Adminer",
"description": "Self-hosted Adminer deployment via Docker",
"description": "Lightweight web-based database management tool (MySQL, PostgreSQL, SQLite, and more)",
"version": "1.0.0",
"author": "Arcane",
"tags": [
+6
View File
@@ -15,3 +15,9 @@ GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
# ── Build Configuration ───────────────────────────────────────────
# GitHub repository owner and name for the container image tag.
# Only needed if you forked the repo and build your own images.
REPO_OWNER=heretek-ai
REPO_NAME=arcane-repo
+86 -57
View File
@@ -1,105 +1,134 @@
# Backdrop
Self-hosted Backdrop deployment via Docker
Open-source CMS — Drupal fork for simplicity
This template provides a containerized deployment of [Backdrop](backdrop) using Docker Compose.
## Project Overview
## Quick Start
1. **Clone and configure:**
```bash
cp .env.example .env
# Edit .env with your configuration
```
2. **Start the service:**
```bash
docker compose up -d
```
3. **Verify it's running:**
```bash
docker compose ps
curl -s http://localhost:8080/ | head -c 200
```
4. **Access the application:**
Open [http://localhost:8080](http://localhost:8080) in your browser.
[Backdrop](https://github.com/backdrop/backdrop) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Backdrop in a containerized environment with persistent storage, health checks, and environment-based configuration.
## Architecture
| Component | Image | Purpose |
|-----------|-------|---------|
| `backdrop` | docker.io/library/backdrop:latest | Main application service |
| `backdrop_data` | (volume) | Persistent data storage |
### Services
Services communicate over a shared Docker network. Data is persisted in named volumes.
| Service | Image | Purpose |
|---------|-------|---------|
| `backdrop` | `docker.io/library/backdrop:latest` | Main application service |
## Configuration
### Volumes
## Configuration
| Volume | Mount | Purpose |
|--------|-------|---------|
| `backdrop_data` | (varies) | Persistent data storage |
Environment variables (set in `.env`):
### Health Check
The container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.
### Networks
Uses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.
## Quick Start
### 1. Configure environment
```bash
cp .env.example .env
# Edit .env with your configuration
```
### 2. Start the service
```bash
docker compose up -d
```
### 3. Verify it's running
```bash
docker compose ps
curl -s http://localhost:8080/ | head -c 200
```
### 4. Access the application
Open [http://localhost:8080](http://localhost:8080) in your browser.
## Configuration Reference
### Environment Variables
Set these in your `.env` file (copy from `.env.example`):
| Variable | Default | Description |
|----------|---------|-------------|
| `BACKDROP_PORT` | `8080` | Configuration variable |
| `BACKDROP_PORT` | `8080` | backdrop host port (default: 8080) |
## Troubleshooting
**Container won't start:**
### Container won't start
Check the logs for error messages:
```bash
docker compose logs backdrop
docker compose logs
```
**Port conflict:**
Edit `.env` and change `BACKDROP_PORT` to an available port, then restart:
### Port conflict
If the default port 8080 is already in use, change it in `.env` and restart:
```bash
# Edit .env and change to an available port
docker compose down && docker compose up -d
```
**Permission errors:**
Ensure the Docker user has write access to the data volume:
### Health check shows unhealthy
The container may need more time to start on first run or low-resource hosts. Check the logs:
```bash
docker compose exec backdrop ls -la /data
docker compose logs
```
**Health check failing:**
If needed, increase `start_period` in `docker-compose.yml`.
### Permission errors
Ensure the Docker user has write access to the data volume:
```bash
docker compose ps # Check STATUS column
docker inspect backdrop --format='{{json .State.Health}}'
docker compose exec backdrop ls -la /data 2>/dev/null || echo "Volume directory not accessible"
```
## Backup & Recovery
**Backup:**
### Backup
Stop the service to ensure data consistency, then back up the data volume:
```bash
# Stop the service
docker compose down
# Backup the data volume
docker run --rm -v backdrop_data:/data -v $(pwd):/backup alpine tar czf /backup/backdrop-backup-$(date +%Y%m%d).tar.gz /data
# Restart
docker run --rm -v backdrop_data:/data -v $(pwd):/backup alpine \
tar czf /backup/backdrop-backup-$(date +%Y%m%d).tar.gz -C /data .
docker compose up -d
```
**Restore:**
### Recovery
```bash
docker compose down
docker run --rm -v backdrop_data:/data -v $(pwd):/backup alpine sh -c "rm -rf /data/* && tar xzf /backup/backdrop-backup.tar.gz -C /"
docker run --rm -v backdrop_data:/data -v $(pwd):/backup alpine \
tar xzf /backup/backdrop-backup-YYYYMMDD.tar.gz -C /data
docker compose up -d
```
## Links
## Project Homepage
- **Project site:** [Backdrop](https://github.com/backdrop/backdrop)
- **Docker Image:** `docker.io/library/backdrop:latest`
- **Issues:** [GitHub Issues](https://github.com/backdrop/backdrop/issues)
## Prerequisites
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "backdrop",
"name": "Backdrop",
"description": "Self-hosted Backdrop deployment via Docker",
"description": "Open-source content management system — a fork of Drupal focused on simplicity and ease of use",
"version": "1.0.0",
"author": "Arcane",
"tags": [
+86 -57
View File
@@ -1,105 +1,134 @@
# Caddy
Self-hosted Caddy deployment via Docker
Automatic-HTTPS web server
This template provides a containerized deployment of [Caddy](caddy) using Docker Compose.
## Project Overview
## Quick Start
1. **Clone and configure:**
```bash
cp .env.example .env
# Edit .env with your configuration
```
2. **Start the service:**
```bash
docker compose up -d
```
3. **Verify it's running:**
```bash
docker compose ps
curl -s http://localhost:8080/ | head -c 200
```
4. **Access the application:**
Open [http://localhost:8080](http://localhost:8080) in your browser.
[Caddy](https://github.com/caddyserver/caddy) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Caddy in a containerized environment with persistent storage, health checks, and environment-based configuration.
## Architecture
| Component | Image | Purpose |
|-----------|-------|---------|
| `caddy` | docker.io/caddy/caddy:latest | Main application service |
| `caddy_data` | (volume) | Persistent data storage |
### Services
Services communicate over a shared Docker network. Data is persisted in named volumes.
| Service | Image | Purpose |
|---------|-------|---------|
| `caddy` | `docker.io/caddy/caddy:latest` | Reverse proxy / web server |
## Configuration
### Volumes
## Configuration
| Volume | Mount | Purpose |
|--------|-------|---------|
| `caddy_data` | (varies) | Persistent data storage |
Environment variables (set in `.env`):
### Health Check
The container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.
### Networks
Uses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.
## Quick Start
### 1. Configure environment
```bash
cp .env.example .env
# Edit .env with your configuration
```
### 2. Start the service
```bash
docker compose up -d
```
### 3. Verify it's running
```bash
docker compose ps
curl -s http://localhost:8080/ | head -c 200
```
### 4. Access the application
Open [http://localhost:8080](http://localhost:8080) in your browser.
## Configuration Reference
### Environment Variables
Set these in your `.env` file (copy from `.env.example`):
| Variable | Default | Description |
|----------|---------|-------------|
| `CADDY_PORT` | `8080` | Configuration variable |
| `CADDY_PORT` | `8080` | Caddy host port (default: 8080) |
## Troubleshooting
**Container won't start:**
### Container won't start
Check the logs for error messages:
```bash
docker compose logs caddy
docker compose logs
```
**Port conflict:**
Edit `.env` and change `CADDY_PORT` to an available port, then restart:
### Port conflict
If the default port 8080 is already in use, change it in `.env` and restart:
```bash
# Edit .env and change to an available port
docker compose down && docker compose up -d
```
**Permission errors:**
Ensure the Docker user has write access to the data volume:
### Health check shows unhealthy
The container may need more time to start on first run or low-resource hosts. Check the logs:
```bash
docker compose exec caddy ls -la /data
docker compose logs
```
**Health check failing:**
If needed, increase `start_period` in `docker-compose.yml`.
### Permission errors
Ensure the Docker user has write access to the data volume:
```bash
docker compose ps # Check STATUS column
docker inspect caddy --format='{{json .State.Health}}'
docker compose exec caddy ls -la /data 2>/dev/null || echo "Volume directory not accessible"
```
## Backup & Recovery
**Backup:**
### Backup
Stop the service to ensure data consistency, then back up the data volume:
```bash
# Stop the service
docker compose down
# Backup the data volume
docker run --rm -v caddy_data:/data -v $(pwd):/backup alpine tar czf /backup/caddy-backup-$(date +%Y%m%d).tar.gz /data
# Restart
docker run --rm -v caddy_data:/data -v $(pwd):/backup alpine \
tar czf /backup/caddy-backup-$(date +%Y%m%d).tar.gz -C /data .
docker compose up -d
```
**Restore:**
### Recovery
```bash
docker compose down
docker run --rm -v caddy_data:/data -v $(pwd):/backup alpine sh -c "rm -rf /data/* && tar xzf /backup/caddy-backup.tar.gz -C /"
docker run --rm -v caddy_data:/data -v $(pwd):/backup alpine \
tar xzf /backup/caddy-backup-YYYYMMDD.tar.gz -C /data
docker compose up -d
```
## Links
## Project Homepage
- **Project site:** [Caddy](https://github.com/caddyserver/caddy)
- **Docker Image:** `docker.io/caddy/caddy:latest`
- **Issues:** [GitHub Issues](https://github.com/caddyserver/caddy/issues)
## Prerequisites
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "caddy",
"name": "Caddy",
"description": "Self-hosted Caddy deployment via Docker",
"description": "Modern, automatic-HTTPS web server with a focus on simplicity and security",
"version": "1.0.0",
"author": "Arcane",
"tags": [
+2 -1
View File
@@ -5,6 +5,7 @@
"version": "1.0.0",
"author": "Arcane",
"tags": [
"multi-service"
"multi-service",
"communication"
]
}
+3 -1
View File
@@ -5,6 +5,8 @@
"version": "1.0.0",
"author": "Arcane",
"tags": [
"ai"
"ai",
"devops",
"tools"
]
}
+86 -57
View File
@@ -1,105 +1,134 @@
# Couchdb
Self-hosted Couchdb deployment via Docker
Document-oriented NoSQL database with replication
This template provides a containerized deployment of [Couchdb](couchdb) using Docker Compose.
## Project Overview
## Quick Start
1. **Clone and configure:**
```bash
cp .env.example .env
# Edit .env with your configuration
```
2. **Start the service:**
```bash
docker compose up -d
```
3. **Verify it's running:**
```bash
docker compose ps
curl -s http://localhost:8080/ | head -c 200
```
4. **Access the application:**
Open [http://localhost:8080](http://localhost:8080) in your browser.
[Couchdb](https://github.com/apache/couchdb) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Couchdb in a containerized environment with persistent storage, health checks, and environment-based configuration.
## Architecture
| Component | Image | Purpose |
|-----------|-------|---------|
| `couchdb` | docker.io/library/couchdb:latest | Main application service |
| `couchdb_data` | (volume) | Persistent data storage |
### Services
Services communicate over a shared Docker network. Data is persisted in named volumes.
| Service | Image | Purpose |
|---------|-------|---------|
| `couchdb` | `docker.io/library/couchdb:latest` | Database storage |
## Configuration
### Volumes
## Configuration
| Volume | Mount | Purpose |
|--------|-------|---------|
| `couchdb_data` | (varies) | Persistent data storage |
Environment variables (set in `.env`):
### Health Check
The container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.
### Networks
Uses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.
## Quick Start
### 1. Configure environment
```bash
cp .env.example .env
# Edit .env with your configuration
```
### 2. Start the service
```bash
docker compose up -d
```
### 3. Verify it's running
```bash
docker compose ps
curl -s http://localhost:8080/ | head -c 200
```
### 4. Access the application
Open [http://localhost:8080](http://localhost:8080) in your browser.
## Configuration Reference
### Environment Variables
Set these in your `.env` file (copy from `.env.example`):
| Variable | Default | Description |
|----------|---------|-------------|
| `COUCHDB_PORT` | `8080` | Configuration variable |
| `COUCHDB_PORT` | `8080` | couchdb host port (default: 8080) |
## Troubleshooting
**Container won't start:**
### Container won't start
Check the logs for error messages:
```bash
docker compose logs couchdb
docker compose logs
```
**Port conflict:**
Edit `.env` and change `COUCHDB_PORT` to an available port, then restart:
### Port conflict
If the default port 8080 is already in use, change it in `.env` and restart:
```bash
# Edit .env and change to an available port
docker compose down && docker compose up -d
```
**Permission errors:**
Ensure the Docker user has write access to the data volume:
### Health check shows unhealthy
The container may need more time to start on first run or low-resource hosts. Check the logs:
```bash
docker compose exec couchdb ls -la /data
docker compose logs
```
**Health check failing:**
If needed, increase `start_period` in `docker-compose.yml`.
### Permission errors
Ensure the Docker user has write access to the data volume:
```bash
docker compose ps # Check STATUS column
docker inspect couchdb --format='{{json .State.Health}}'
docker compose exec couchdb ls -la /data 2>/dev/null || echo "Volume directory not accessible"
```
## Backup & Recovery
**Backup:**
### Backup
Stop the service to ensure data consistency, then back up the data volume:
```bash
# Stop the service
docker compose down
# Backup the data volume
docker run --rm -v couchdb_data:/data -v $(pwd):/backup alpine tar czf /backup/couchdb-backup-$(date +%Y%m%d).tar.gz /data
# Restart
docker run --rm -v couchdb_data:/data -v $(pwd):/backup alpine \
tar czf /backup/couchdb-backup-$(date +%Y%m%d).tar.gz -C /data .
docker compose up -d
```
**Restore:**
### Recovery
```bash
docker compose down
docker run --rm -v couchdb_data:/data -v $(pwd):/backup alpine sh -c "rm -rf /data/* && tar xzf /backup/couchdb-backup.tar.gz -C /"
docker run --rm -v couchdb_data:/data -v $(pwd):/backup alpine \
tar xzf /backup/couchdb-backup-YYYYMMDD.tar.gz -C /data
docker compose up -d
```
## Links
## Project Homepage
- **Project site:** [Couchdb](https://github.com/apache/couchdb)
- **Docker Image:** `docker.io/library/couchdb:latest`
- **Issues:** [GitHub Issues](https://github.com/apache/couchdb/issues)
## Prerequisites
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "couchdb",
"name": "Couchdb",
"description": "Self-hosted Couchdb deployment via Docker",
"description": "Open-source document-oriented NoSQL database with multi-master replication",
"version": "1.0.0",
"author": "Arcane",
"tags": [
+7 -4
View File
@@ -19,12 +19,15 @@ QUERY_STORAGE_TYPE=fs
# ── Optional: S3-Compatible Object Storage ──────────────────────────
# Set QUERY_STORAGE_TYPE=s3 and configure:
# AWS_S3_ENDPOINT=https://s3.amazonaws.com
# AWS_S3_BUCKET=my-databend-bucket
# AWS_ACCESS_KEY_ID=your-access-key
# AWS_SECRET_ACCESS_KEY=your-secret-key
AWS_S3_ENDPOINT=https://s3.amazonaws.com
AWS_S3_BUCKET=my-databend-bucket
AWS_ACCESS_KEY_ID=your-access-key
AWS_SECRET_ACCESS_KEY=your-secret-key
# ── Optional: Embedded MinIO ────────────────────────────────────────
# Set MINIO_ENABLED=true to run a built-in MinIO server inside the
# container for local object storage testing. MinIO available on port 9000.
MINIO_ENABLED=false
# Host port for embedded MinIO S3-compatible API (default: 9000)
DATABEND_MINIO_PORT=9000
+125 -118
View File
@@ -1,137 +1,144 @@
# Databend — Cloud Data Warehouse
# Databend
[Databend](https://databend.com) is an open-source cloud data warehouse. It provides fast, elastic SQL analytics on object storage with MySQL wire-compatible protocol, real-time columnar performance, and instant scaling.
Cloud-native data warehouse
## Project Overview
[Databend](https://github.com/databendlabs/databend) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Databend in a containerized environment with persistent storage, health checks, and environment-based configuration.
## Architecture
### Services
| Service | Image | Purpose |
|---------|-------|---------|
| `databend` | `datafuselabs/databend:latest` | Main application service |
### Volumes
| Volume | Mount | Purpose |
|--------|-------|---------|
| `databend_data` | (varies) | Persistent data storage |
### Networks
Uses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.
## Quick Start
1. **Start the server:**
```bash
cp .env.example .env
docker compose up -d
```
2. **Connect using the MySQL client:**
```bash
mysql -h 127.0.0.1 -P 8000 -u root
```
3. **Run a query:**
```sql
SELECT 'Hello, Databend!' AS greeting;
```
4. **Create a table and insert data:**
```sql
CREATE TABLE IF NOT EXISTS books (
id INT,
title VARCHAR,
author VARCHAR,
year INT
);
INSERT INTO books VALUES
(1, 'The Great Gatsby', 'F. Scott Fitzgerald', 1925),
(2, 'To Kill a Mockingbird', 'Harper Lee', 1960);
SELECT * FROM books WHERE year > 1950;
```
5. **Use the HTTP handler (REST API):**
```bash
curl -X POST http://localhost:8124/v1/query \
-H "Content-Type: application/json" \
-d '{"sql": "SELECT * FROM books"}'
```
## Configuration
Copy `.env.example` to `.env` and edit:
### Optional Variables
| Variable | Default | Description |
|-------------------------|----------|---------------------------------------------------------------|
| `DATABEND_PORT` | `8000` | MySQL wire protocol port |
| `DATABEND_HTTP_PORT` | `8124` | HTTP handler (REST query) port |
| `DATABEND_MINIO_PORT` | `9000` | Embedded MinIO port (when MINIO_ENABLED=true) |
| `QUERY_DEFAULT_USER` | `root` | Default SQL user |
| `QUERY_DEFAULT_PASSWORD`| (empty) | Default SQL password |
| `QUERY_STORAGE_TYPE` | `fs` | Storage backend: `fs` (local) or `s3` |
| `MINIO_ENABLED` | `false` | Enable built-in MinIO for local S3-compatible object storage |
## API Endpoints
Databend exposes both MySQL-compatible and REST interfaces:
| Interface | Port | Protocol | Description |
|---------------|-------|-----------------|------------------------------------|
| MySQL Handler | 8000 | MySQL wire | Connect with any MySQL client |
| HTTP Handler | 8124 | HTTP REST | SQL queries via JSON API |
| MinIO (opt) | 9000 | S3-compatible | Built-in object storage (MinIO) |
### REST API Example
### 1. Configure environment
```bash
curl -X POST http://localhost:8124/v1/query \
-H "Content-Type: application/json" \
-d '{"sql": "SELECT database(), version()"}'
cp .env.example .env
# Edit .env with your configuration
```
## Health Check
**MySQL handler health:**
### 2. Start the service
```bash
mysql -h 127.0.0.1 -P 8000 -u root -e "SELECT 1"
```
**HTTP handler health:**
```bash
curl -s -X POST http://localhost:8124/v1/query \
-H "Content-Type: application/json" \
-d '{"sql": "SELECT 1"}' | grep -q "1" && echo "healthy"
```
A healthy server responds with query results on either interface.
## Managing Databend
**View logs:**
```bash
docker compose logs -f databend
```
**Access the Meta service (embedded):**
Databend's all-in-one image includes both the query layer and an embedded meta service. For production, consider deploying separate `databend-query` and `databend-meta` containers with a shared MinIO/S3 backend.
**Reset data:**
```bash
docker compose down -v
docker compose up -d
```
**Bulk load CSV data:**
### 3. Verify it's running
```bash
curl -X PUT http://localhost:8000/v1/streaming_load \
-H "insert_sql: INSERT INTO books FILE_FORMAT = (type = CSV)" \
-F "upload=@/path/to/books.csv"
docker compose ps
curl -s http://localhost:8000/ | head -c 200
```
### 4. Access the application
Open [http://localhost:8000](http://localhost:8000) in your browser.
## Configuration Reference
### Environment Variables
Set these in your `.env` file (copy from `.env.example`):
| Variable | Default | Description |
|----------|---------|-------------|
| `DATABEND_PORT` | `8000` | mysql -h 127.0.0.1 -P 8000 -u root |
| `DATABEND_HTTP_PORT` | `8124` | HTTP handler port for REST API queries (default: 8124) |
| `QUERY_DEFAULT_USER` | `root` | Query user credentials (default: root with no password) |
| `QUERY_DEFAULT_PASSWORD` | `—` | QUERY_DEFAULT_PASSWORD configuration value |
| `QUERY_STORAGE_TYPE` | `fs` | Storage backend: 'fs' (local filesystem) or 's3' |
| `AWS_S3_ENDPOINT` | `https://s3.amazonaws.com` | Set QUERY_STORAGE_TYPE=s3 and configure: |
| `AWS_S3_BUCKET` | `my-databend-bucket` | AWS_S3_BUCKET configuration value |
| `AWS_ACCESS_KEY_ID` | `your-access-key` | AWS_ACCESS_KEY_ID configuration value |
| `AWS_SECRET_ACCESS_KEY` | `your-secret-key` | AWS_SECRET_ACCESS_KEY configuration value |
| `MINIO_ENABLED` | `false` | container for local object storage testing. MinIO available on port 9000. |
| `DATABEND_MINIO_PORT` | `9000` | Host port for embedded MinIO S3-compatible API (default: 9000) |
## Troubleshooting
| Symptom | Likely Cause | Fix |
|-----------------------------------------------------|----------------------------------|----------------------------------------------------------|
| `ERROR 2013 (HY000): Lost connection` | Server not ready | Wait a few seconds and retry |
| `Access denied for user` | Wrong credentials | Verify `QUERY_DEFAULT_USER` and `QUERY_DEFAULT_PASSWORD` |
| Query returns no results | Table or database doesn't exist | Create the database first with `CREATE DATABASE` |
| `No handler for protocol` | Wrong port | Use port 8000 (MySQL) or 8124 (HTTP) |
### Container won't start
Check the logs for error messages:
```bash
docker compose logs
```
### Port conflict
If the default port 8000 is already in use, change it in `.env` and restart:
```bash
# Edit .env and change to an available port
docker compose down && docker compose up -d
```
### Health check shows unhealthy
The container may need more time to start on first run or low-resource hosts. Check the logs:
```bash
docker compose logs
```
If needed, increase `start_period` in `docker-compose.yml`.
### Permission errors
Ensure the Docker user has write access to the data volume:
```bash
docker compose exec databend ls -la /data 2>/dev/null || echo "Volume directory not accessible"
```
## Backup & Recovery
### Backup
Stop the service to ensure data consistency, then back up the data volume:
```bash
docker compose down
docker run --rm -v databend_data:/data -v $(pwd):/backup alpine \
tar czf /backup/databend-backup-$(date +%Y%m%d).tar.gz -C /data .
docker compose up -d
```
### Recovery
```bash
docker compose down
docker run --rm -v databend_data:/data -v $(pwd):/backup alpine \
tar xzf /backup/databend-backup-YYYYMMDD.tar.gz -C /data
docker compose up -d
```
## Project Homepage
- **Project site:** [Databend](https://github.com/databendlabs/databend)
- **Docker Image:** `datafuselabs/databend:latest`
- **Issues:** [GitHub Issues](https://github.com/databendlabs/databend/issues)
## Prerequisites
- Docker Engine 20.10+
- Docker Compose v2.0+
- 512MB+ RAM recommended
- 1GB+ free disk space for data storage
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "databend",
"name": "Databend",
"description": "Open-source cloud data warehouse — run SQL analytics on object storage with MySQL-compatible wire protocol, instant elasticity, and real-time columnar performance",
"description": "Cloud-native data warehouse with instant elasticity and real-time query capabilities",
"version": "1.0.0",
"author": "Arcane",
"tags": [
+3 -1
View File
@@ -5,6 +5,8 @@
"version": "1.0.0",
"author": "Arcane",
"tags": [
"security"
"security",
"infrastructure",
"tools"
]
}
+1 -1
View File
@@ -16,7 +16,7 @@ PROMETHEUS_PORT=9090
# Data retention period for Prometheus metrics (default: 15d)
# Accepts: 1d, 30d, 90d, 365d, etc.
# PROMETHEUS_RETENTION=15d
PROMETHEUS_RETENTION=15d
# ── AlertManager ──────────────────────────────────────────────────
# Host port for AlertManager web UI and API
+125 -98
View File
@@ -1,123 +1,150 @@
# DocsGPT — Documentation Q&A Platform
# DocsGPT
[DocsGPT](https://docsgpt.ai/) is an open-source platform that turns your documentation, codebase, and knowledge base into a natural-language Q&A system. Index your content and ask questions with LLM-powered answers and source citations.
AI-powered documentation assistant
## Project Overview
[DocsGPT](https://github.com/arc53/DocsGPT) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run DocsGPT in a containerized environment with persistent storage, health checks, and environment-based configuration.
## Architecture
### Services
| Service | Image | Purpose |
|---------|-------|---------|
| `postgres` | `postgres:16` | Database storage |
| `docsgpt` | `arc53/docsgpt:latest` | Main application service |
### Volumes
| Volume | Mount | Purpose |
|--------|-------|---------|
| `docsgpt_postgres_data` | (varies) | Persistent data storage |
### Health Check
The container runs a health check every 10s (5 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.
### Networks
Uses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.
## Quick Start
1. **Copy and edit the environment file:**
```bash
cp .env.example .env
# Set SECRET_KEY, DOCSGPT_DB_PASSWORD, and at least one LLM provider key
```
2. **Start the services:**
```bash
docker compose up -d
```
3. **Access the web UI:**
Open [http://localhost:3000](http://localhost:3000) in your browser.
4. **Verify the API:**
```bash
curl http://localhost:3000/api/health
```
Expected response: `{"status":"ok"}` or similar health indication.
## Configuration
Copy `.env.example` to `.env` and edit:
| Variable | Default | Description |
|------------------------|---------------------------------------|-------------------------------------------------|
| `SECRET_KEY` | — **(required)** | Application secret key (generate with `openssl rand -hex 32`) |
| `DOCSGPT_DB_PASSWORD` | — **(required)** | PostgreSQL password |
| `DOCSGPT_DB_USER` | `docsgpt` | PostgreSQL user |
| `DOCSGPT_DB_NAME` | `docsgpt` | PostgreSQL database name |
| `DOCSGPT_PORT` | `3000` | Host port for the web UI and API |
| `DOCSGPT_DB_PORT` | `5432` | Host port for PostgreSQL |
| `LLM_NAME` | `gpt-4o` | LLM model to use for answering questions |
| `OPENAI_API_KEY` | — | OpenAI API key (required for OpenAI models) |
| `OLLAMA_BASE_URL` | `http://host.docker.internal:11434` | Local Ollama endpoint |
| `EMBEDDINGS_NAME` | — | Override embedding model (optional) |
| `EMBEDDINGS_KEY` | — | Embedding API key (optional) |
| `APP_ENV` | `production` | Application environment |
## API Endpoints
| Endpoint | Method | Description |
|--------------------------|--------|--------------------------------------------|
| `/api/health` | GET | Health check |
| `/api/train` | POST | Index documentation (train on new content) |
| `/api/ask` | POST | Ask a question against indexed content |
| `/api/training-examples` | GET | List indexed documents |
| `/api/chat` | POST | Chat with context (conversation mode) |
### Ask a Question
### 1. Configure environment
```bash
curl -X POST http://localhost:3000/api/ask \
-H "Content-Type: application/json" \
-d '{
"question": "How do I install the CLI?",
"history": []
}'
cp .env.example .env
# Edit .env with your configuration
```
### Index Documentation
### 2. Start the service
```bash
curl -X POST http://localhost:3000/api/train \
-H "Content-Type: application/json" \
-d '{
"url": "https://docs.example.com/getting-started"
}'
docker compose up -d
```
## Health Check
### 3. Verify it's running
```bash
curl http://localhost:3000/api/health
docker compose ps
curl -s http://localhost:5432/ | head -c 200
```
Expected response:
```json
{"status":"ok"}
```
### 4. Access the application
## Managing DocsGPT
Open [http://localhost:5432](http://localhost:5432) in your browser.
**View logs:**
## Configuration Reference
```bash
docker compose logs -f docsgpt
```
### Environment Variables
**Re-index content:**
Set these in your `.env` file (copy from `.env.example`):
```bash
curl -X POST http://localhost:3000/api/train \
-H "Content-Type: application/json" \
-d '{"url": "https://your-docs-site.com"}'
```
| Variable | Default | Description |
|----------|---------|-------------|
| `SECRET_KEY` | `change-me-to-a-random-64-char-hex-string` | Generate with: openssl rand -hex 32 |
| `DOCSGPT_DB_PASSWORD` | `change-me-to-a-strong-password` | Database password (required) |
| `DOCSGPT_PORT` | `3000` | DocsGPT application port (default: 3000) |
| `DOCSGPT_DB_PORT` | `5432` | Host port for PostgreSQL (default: 5432) |
| `DOCSGPT_DB_USER` | `docsgpt` | ── Database ─────────────────────────────────────────────────────── |
| `DOCSGPT_DB_NAME` | `docsgpt` | DOCSGPT_DB_NAME configuration value |
| `LLM_NAME` | `gpt-4o` | Primary LLM provider (e.g., gpt-4o, gpt-4-turbo) |
| `OPENAI_API_KEY` | `—` | OpenAI API key (required for OpenAI models) |
| `OLLAMA_BASE_URL` | `http://host.docker.internal:11434` | For local inference via Ollama |
| `EMBEDDINGS_NAME` | `—` | Override default embedding provider if needed |
| `EMBEDDINGS_KEY` | `—` | EMBEDDINGS_KEY configuration value |
| `APP_ENV` | `production` | ── Application ──────────────────────────────────────────────────── |
**Stop the services:**
```bash
docker compose down
```
## Troubleshooting
| Symptom | Likely Cause | Fix |
|--------------------------------------------|-----------------------------------|------------------------------------------------------|
| `Connection refused` on port 3000 | Container still starting | Wait and retry — first start can take 60s+ |
| `401 Unauthorized` when asking questions | No API key configured | Set `OPENAI_API_KEY` in `.env` |
| Answers are low quality | Wrong model or no RAG content | Index documentation first, or change `LLM_NAME` |
| Database connection error | Wrong DB credentials | Verify `DOCSGPT_DB_PASSWORD` matches between services|
| Ollama returns 404 | Model not pulled | Run `docker exec docsgpt ollama pull <model>` |
### Container won't start
Check the logs for error messages:
```bash
docker compose logs
```
### Port conflict
If the default port 5432 is already in use, change it in `.env` and restart:
```bash
# Edit .env and change to an available port
docker compose down && docker compose up -d
```
### Health check shows unhealthy
The container may need more time to start on first run or low-resource hosts. Check the logs:
```bash
docker compose logs
```
If needed, increase `start_period` in `docker-compose.yml`.
### Permission errors
Ensure the Docker user has write access to the data volume:
```bash
docker compose exec postgres ls -la /data 2>/dev/null || echo "Volume directory not accessible"
```
## Backup & Recovery
### Backup
Stop the service to ensure data consistency, then back up the data volume:
```bash
docker compose down
docker run --rm -v docsgpt_postgres_data:/data -v $(pwd):/backup alpine \
tar czf /backup/docsgpt-backup-$(date +%Y%m%d).tar.gz -C /data .
docker compose up -d
```
### Recovery
```bash
docker compose down
docker run --rm -v docsgpt_postgres_data:/data -v $(pwd):/backup alpine \
tar xzf /backup/docsgpt-backup-YYYYMMDD.tar.gz -C /data
docker compose up -d
```
## Project Homepage
- **Project site:** [DocsGPT](https://github.com/arc53/DocsGPT)
- **Docker Image:** `postgres:16`
- **Issues:** [GitHub Issues](https://github.com/arc53/DocsGPT/issues)
## Prerequisites
- Docker Engine 20.10+
- Docker Compose v2.0+
- 512MB+ RAM recommended
- 1GB+ free disk space for data storage
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "docsgpt",
"name": "DocsGPT",
"description": "Open-source documentation Q&A platform — index your docs, code, and knowledge base, then ask natural language questions with LLM-powered answers and citations",
"description": "AI-powered documentation assistant — chat with your documentation using LLMs",
"version": "1.0.0",
"author": "Arcane",
"tags": [
+120 -41
View File
@@ -1,57 +1,136 @@
# Dokploy — Open-Source Platform as a Service
# Dokploy
[Dokploy](https://dokploy.com/) is an open-source PaaS that lets you deploy and manage applications, databases, and services on your own infrastructure. Think Vercel or Railway, but running on your own servers.
Self-hosted deployment platform
## Quick Start
## Project Overview
1. **Start the service:**
```bash
docker compose up -d
```
2. **Access the dashboard** at [http://localhost:3000](http://localhost:3000)
3. **Create your admin account** on first launch.
4. **Enable Docker management** by uncommenting the `/var/run/docker.sock` mount in `docker-compose.yml` — required to manage containers from the dashboard.
## Configuration
Copy `.env.example` to `.env` and edit:
| Variable | Default | Description |
|-----------------------|--------------|-----------------------------------------------|
| `DOKPLOY_PORT` | `3000` | Host port for the web dashboard |
| `DOKPLOY_NODE_ENV` | `production` | Node.js environment mode |
| `DOKPLOY_SECRET_KEY` | (empty) | Session encryption secret — **required** |
[Dokploy](https://github.com/Dokploy/dokploy) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Dokploy in a containerized environment with persistent storage, health checks, and environment-based configuration.
## Architecture
- **dokploy**: Single Node.js container running the complete Dokploy platform — API server, web dashboard, background task runner, and database (internal SQLite, no external DB needed). Self-contained. Optional Docker socket mount enables full container lifecycle management.
### Services
## Features
| Service | Image | Purpose |
|---------|-------|---------|
| `dokploy` | `dokploy/dokploy:latest` | Main application service |
- **Application deployment**: Deploy from Git, Docker images, or Docker Compose files
- **Database provisioning**: One-click PostgreSQL, MySQL, MongoDB, and Redis instances
- **Automatic SSL**: Built-in Let's Encrypt integration for HTTPS
- **Rolling updates**: Zero-downtime deploys with automatic rollback on failure
- **Resource monitoring**: CPU, memory, and network metrics per application
- **Team management**: Role-based access with project-level permissions
### Volumes
## Docker Socket
| Volume | Mount | Purpose |
|--------|-------|---------|
| `dokploy_data` | (varies) | Persistent data storage |
The Docker socket mount (`/var/run/docker.sock`) is required for:
- Creating and managing containers through the dashboard
- Reading container logs and metrics
- Starting, stopping, and restarting applications
### Networks
It is **commented by default** — uncomment in `docker-compose.yml` when you want full PaaS functionality.
Uses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.
## Health Check
## Quick Start
### 1. Configure environment
```bash
curl http://localhost:3000/api/health
cp .env.example .env
# Edit .env with your configuration
```
Full documentation: [dokploy.com/docs](https://dokploy.com/docs)
### 2. Start the service
```bash
docker compose up -d
```
### 3. Verify it's running
```bash
docker compose ps
curl -s http://localhost:3000/ | head -c 200
```
### 4. Access the application
Open [http://localhost:3000](http://localhost:3000) in your browser.
## Configuration Reference
### Environment Variables
Set these in your `.env` file (copy from `.env.example`):
| Variable | Default | Description |
|----------|---------|-------------|
| `DOKPLOY_PORT` | `3000` | Host port for Dokploy web dashboard (default: 3000) |
| `DOKPLOY_NODE_ENV` | `production` | Node.js environment mode: production, development |
| `DOKPLOY_SECRET_KEY` | `—` | Secret key for session encryption (generate a random string) |
## Troubleshooting
### Container won't start
Check the logs for error messages:
```bash
docker compose logs
```
### Port conflict
If the default port 3000 is already in use, change it in `.env` and restart:
```bash
# Edit .env and change to an available port
docker compose down && docker compose up -d
```
### Health check shows unhealthy
The container may need more time to start on first run or low-resource hosts. Check the logs:
```bash
docker compose logs
```
If needed, increase `start_period` in `docker-compose.yml`.
### Permission errors
Ensure the Docker user has write access to the data volume:
```bash
docker compose exec dokploy ls -la /data 2>/dev/null || echo "Volume directory not accessible"
```
## Backup & Recovery
### Backup
Stop the service to ensure data consistency, then back up the data volume:
```bash
docker compose down
docker run --rm -v dokploy_data:/data -v $(pwd):/backup alpine \
tar czf /backup/dokploy-backup-$(date +%Y%m%d).tar.gz -C /data .
docker compose up -d
```
### Recovery
```bash
docker compose down
docker run --rm -v dokploy_data:/data -v $(pwd):/backup alpine \
tar xzf /backup/dokploy-backup-YYYYMMDD.tar.gz -C /data
docker compose up -d
```
## Project Homepage
- **Project site:** [Dokploy](https://github.com/Dokploy/dokploy)
- **Docker Image:** `dokploy/dokploy:latest`
- **Issues:** [GitHub Issues](https://github.com/Dokploy/dokploy/issues)
## Prerequisites
- Docker Engine 20.10+
- Docker Compose v2.0+
- 512MB+ RAM recommended
- 1GB+ free disk space for data storage
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "dokploy",
"name": "Dokploy",
"description": "Open-source Platform as a Service — deploy and manage applications, databases, and services on your own infrastructure with a clean dashboard",
"description": "Self-hosted deployment platform for applications and databases",
"version": "1.0.0",
"author": "Arcane",
"tags": [
+86 -57
View File
@@ -1,105 +1,134 @@
# Drupal
Self-hosted Drupal deployment via Docker
Open-source content management framework
This template provides a containerized deployment of [Drupal](drupal) using Docker Compose.
## Project Overview
## Quick Start
1. **Clone and configure:**
```bash
cp .env.example .env
# Edit .env with your configuration
```
2. **Start the service:**
```bash
docker compose up -d
```
3. **Verify it's running:**
```bash
docker compose ps
curl -s http://localhost:8080/ | head -c 200
```
4. **Access the application:**
Open [http://localhost:8080](http://localhost:8080) in your browser.
[Drupal](https://github.com/drupal/drupal) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Drupal in a containerized environment with persistent storage, health checks, and environment-based configuration.
## Architecture
| Component | Image | Purpose |
|-----------|-------|---------|
| `drupal` | docker.io/bitnami/drupal:latest | Main application service |
| `drupal_data` | (volume) | Persistent data storage |
### Services
Services communicate over a shared Docker network. Data is persisted in named volumes.
| Service | Image | Purpose |
|---------|-------|---------|
| `drupal` | `docker.io/bitnami/drupal:latest` | Main application service |
## Configuration
### Volumes
## Configuration
| Volume | Mount | Purpose |
|--------|-------|---------|
| `drupal_data` | (varies) | Persistent data storage |
Environment variables (set in `.env`):
### Health Check
The container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.
### Networks
Uses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.
## Quick Start
### 1. Configure environment
```bash
cp .env.example .env
# Edit .env with your configuration
```
### 2. Start the service
```bash
docker compose up -d
```
### 3. Verify it's running
```bash
docker compose ps
curl -s http://localhost:8080/ | head -c 200
```
### 4. Access the application
Open [http://localhost:8080](http://localhost:8080) in your browser.
## Configuration Reference
### Environment Variables
Set these in your `.env` file (copy from `.env.example`):
| Variable | Default | Description |
|----------|---------|-------------|
| `DRUPAL_PORT` | `8080` | Configuration variable |
| `DRUPAL_PORT` | `8080` | Drupal host port (default: 8080) |
## Troubleshooting
**Container won't start:**
### Container won't start
Check the logs for error messages:
```bash
docker compose logs drupal
docker compose logs
```
**Port conflict:**
Edit `.env` and change `DRUPAL_PORT` to an available port, then restart:
### Port conflict
If the default port 8080 is already in use, change it in `.env` and restart:
```bash
# Edit .env and change to an available port
docker compose down && docker compose up -d
```
**Permission errors:**
Ensure the Docker user has write access to the data volume:
### Health check shows unhealthy
The container may need more time to start on first run or low-resource hosts. Check the logs:
```bash
docker compose exec drupal ls -la /data
docker compose logs
```
**Health check failing:**
If needed, increase `start_period` in `docker-compose.yml`.
### Permission errors
Ensure the Docker user has write access to the data volume:
```bash
docker compose ps # Check STATUS column
docker inspect drupal --format='{{json .State.Health}}'
docker compose exec drupal ls -la /data 2>/dev/null || echo "Volume directory not accessible"
```
## Backup & Recovery
**Backup:**
### Backup
Stop the service to ensure data consistency, then back up the data volume:
```bash
# Stop the service
docker compose down
# Backup the data volume
docker run --rm -v drupal_data:/data -v $(pwd):/backup alpine tar czf /backup/drupal-backup-$(date +%Y%m%d).tar.gz /data
# Restart
docker run --rm -v drupal_data:/data -v $(pwd):/backup alpine \
tar czf /backup/drupal-backup-$(date +%Y%m%d).tar.gz -C /data .
docker compose up -d
```
**Restore:**
### Recovery
```bash
docker compose down
docker run --rm -v drupal_data:/data -v $(pwd):/backup alpine sh -c "rm -rf /data/* && tar xzf /backup/drupal-backup.tar.gz -C /"
docker run --rm -v drupal_data:/data -v $(pwd):/backup alpine \
tar xzf /backup/drupal-backup-YYYYMMDD.tar.gz -C /data
docker compose up -d
```
## Links
## Project Homepage
- **Project site:** [Drupal](https://github.com/drupal/drupal)
- **Docker Image:** `docker.io/bitnami/drupal:latest`
- **Issues:** [GitHub Issues](https://github.com/drupal/drupal/issues)
## Prerequisites
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "drupal",
"name": "Drupal",
"description": "Self-hosted Drupal deployment via Docker",
"description": "Powerful open-source content management framework for building websites and applications",
"version": "1.0.0",
"author": "Arcane",
"tags": [
+86 -57
View File
@@ -1,105 +1,134 @@
# Elasticsearch
Self-hosted Elasticsearch deployment via Docker
Distributed search and analytics engine
This template provides a containerized deployment of [Elasticsearch](elasticsearch) using Docker Compose.
## Project Overview
## Quick Start
1. **Clone and configure:**
```bash
cp .env.example .env
# Edit .env with your configuration
```
2. **Start the service:**
```bash
docker compose up -d
```
3. **Verify it's running:**
```bash
docker compose ps
curl -s http://localhost:9200/ | head -c 200
```
4. **Access the application:**
Open [http://localhost:9200](http://localhost:9200) in your browser.
[Elasticsearch](https://github.com/elastic/elasticsearch) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Elasticsearch in a containerized environment with persistent storage, health checks, and environment-based configuration.
## Architecture
| Component | Image | Purpose |
|-----------|-------|---------|
| `elasticsearch` | docker.io/bitnamicharts/elasticsearch:latest | Main application service |
| `elasticsearch_data` | (volume) | Persistent data storage |
### Services
Services communicate over a shared Docker network. Data is persisted in named volumes.
| Service | Image | Purpose |
|---------|-------|---------|
| `elasticsearch` | `docker.io/bitnamicharts/elasticsearch:latest` | Main application service |
## Configuration
### Volumes
## Configuration
| Volume | Mount | Purpose |
|--------|-------|---------|
| `elasticsearch_data` | (varies) | Persistent data storage |
Environment variables (set in `.env`):
### Health Check
The container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.
### Networks
Uses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.
## Quick Start
### 1. Configure environment
```bash
cp .env.example .env
# Edit .env with your configuration
```
### 2. Start the service
```bash
docker compose up -d
```
### 3. Verify it's running
```bash
docker compose ps
curl -s http://localhost:9200/ | head -c 200
```
### 4. Access the application
Open [http://localhost:9200](http://localhost:9200) in your browser.
## Configuration Reference
### Environment Variables
Set these in your `.env` file (copy from `.env.example`):
| Variable | Default | Description |
|----------|---------|-------------|
| `ELASTICSEARCH_PORT` | `9200` | Configuration variable |
| `ELASTICSEARCH_PORT` | `9200` | Elasticsearch host port (default: 9200) |
## Troubleshooting
**Container won't start:**
### Container won't start
Check the logs for error messages:
```bash
docker compose logs elasticsearch
docker compose logs
```
**Port conflict:**
Edit `.env` and change `ELASTICSEARCH_PORT` to an available port, then restart:
### Port conflict
If the default port 9200 is already in use, change it in `.env` and restart:
```bash
# Edit .env and change to an available port
docker compose down && docker compose up -d
```
**Permission errors:**
Ensure the Docker user has write access to the data volume:
### Health check shows unhealthy
The container may need more time to start on first run or low-resource hosts. Check the logs:
```bash
docker compose exec elasticsearch ls -la /data
docker compose logs
```
**Health check failing:**
If needed, increase `start_period` in `docker-compose.yml`.
### Permission errors
Ensure the Docker user has write access to the data volume:
```bash
docker compose ps # Check STATUS column
docker inspect elasticsearch --format='{{json .State.Health}}'
docker compose exec elasticsearch ls -la /data 2>/dev/null || echo "Volume directory not accessible"
```
## Backup & Recovery
**Backup:**
### Backup
Stop the service to ensure data consistency, then back up the data volume:
```bash
# Stop the service
docker compose down
# Backup the data volume
docker run --rm -v elasticsearch_data:/data -v $(pwd):/backup alpine tar czf /backup/elasticsearch-backup-$(date +%Y%m%d).tar.gz /data
# Restart
docker run --rm -v elasticsearch_data:/data -v $(pwd):/backup alpine \
tar czf /backup/elasticsearch-backup-$(date +%Y%m%d).tar.gz -C /data .
docker compose up -d
```
**Restore:**
### Recovery
```bash
docker compose down
docker run --rm -v elasticsearch_data:/data -v $(pwd):/backup alpine sh -c "rm -rf /data/* && tar xzf /backup/elasticsearch-backup.tar.gz -C /"
docker run --rm -v elasticsearch_data:/data -v $(pwd):/backup alpine \
tar xzf /backup/elasticsearch-backup-YYYYMMDD.tar.gz -C /data
docker compose up -d
```
## Links
## Project Homepage
- **Project site:** [Elasticsearch](https://github.com/elastic/elasticsearch)
- **Docker Image:** `docker.io/bitnamicharts/elasticsearch:latest`
- **Issues:** [GitHub Issues](https://github.com/elastic/elasticsearch/issues)
## Prerequisites
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "elasticsearch",
"name": "Elasticsearch",
"description": "Self-hosted Elasticsearch deployment via Docker",
"description": "Distributed search and analytics engine for all types of data",
"version": "1.0.0",
"author": "Arcane",
"tags": [
+86 -57
View File
@@ -1,105 +1,134 @@
# Friendica
Self-hosted Friendica deployment via Docker
Decentralized social networking platform
This template provides a containerized deployment of [Friendica](friendica) using Docker Compose.
## Project Overview
## Quick Start
1. **Clone and configure:**
```bash
cp .env.example .env
# Edit .env with your configuration
```
2. **Start the service:**
```bash
docker compose up -d
```
3. **Verify it's running:**
```bash
docker compose ps
curl -s http://localhost:8080/ | head -c 200
```
4. **Access the application:**
Open [http://localhost:8080](http://localhost:8080) in your browser.
[Friendica](https://github.com/friendica/friendica) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Friendica in a containerized environment with persistent storage, health checks, and environment-based configuration.
## Architecture
| Component | Image | Purpose |
|-----------|-------|---------|
| `friendica` | docker.io/library/friendica:latest | Main application service |
| `friendica_data` | (volume) | Persistent data storage |
### Services
Services communicate over a shared Docker network. Data is persisted in named volumes.
| Service | Image | Purpose |
|---------|-------|---------|
| `friendica` | `docker.io/library/friendica:latest` | Main application service |
## Configuration
### Volumes
## Configuration
| Volume | Mount | Purpose |
|--------|-------|---------|
| `friendica_data` | (varies) | Persistent data storage |
Environment variables (set in `.env`):
### Health Check
The container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.
### Networks
Uses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.
## Quick Start
### 1. Configure environment
```bash
cp .env.example .env
# Edit .env with your configuration
```
### 2. Start the service
```bash
docker compose up -d
```
### 3. Verify it's running
```bash
docker compose ps
curl -s http://localhost:8080/ | head -c 200
```
### 4. Access the application
Open [http://localhost:8080](http://localhost:8080) in your browser.
## Configuration Reference
### Environment Variables
Set these in your `.env` file (copy from `.env.example`):
| Variable | Default | Description |
|----------|---------|-------------|
| `FRIENDICA_PORT` | `8080` | Configuration variable |
| `FRIENDICA_PORT` | `8080` | friendica host port (default: 8080) |
## Troubleshooting
**Container won't start:**
### Container won't start
Check the logs for error messages:
```bash
docker compose logs friendica
docker compose logs
```
**Port conflict:**
Edit `.env` and change `FRIENDICA_PORT` to an available port, then restart:
### Port conflict
If the default port 8080 is already in use, change it in `.env` and restart:
```bash
# Edit .env and change to an available port
docker compose down && docker compose up -d
```
**Permission errors:**
Ensure the Docker user has write access to the data volume:
### Health check shows unhealthy
The container may need more time to start on first run or low-resource hosts. Check the logs:
```bash
docker compose exec friendica ls -la /data
docker compose logs
```
**Health check failing:**
If needed, increase `start_period` in `docker-compose.yml`.
### Permission errors
Ensure the Docker user has write access to the data volume:
```bash
docker compose ps # Check STATUS column
docker inspect friendica --format='{{json .State.Health}}'
docker compose exec friendica ls -la /data 2>/dev/null || echo "Volume directory not accessible"
```
## Backup & Recovery
**Backup:**
### Backup
Stop the service to ensure data consistency, then back up the data volume:
```bash
# Stop the service
docker compose down
# Backup the data volume
docker run --rm -v friendica_data:/data -v $(pwd):/backup alpine tar czf /backup/friendica-backup-$(date +%Y%m%d).tar.gz /data
# Restart
docker run --rm -v friendica_data:/data -v $(pwd):/backup alpine \
tar czf /backup/friendica-backup-$(date +%Y%m%d).tar.gz -C /data .
docker compose up -d
```
**Restore:**
### Recovery
```bash
docker compose down
docker run --rm -v friendica_data:/data -v $(pwd):/backup alpine sh -c "rm -rf /data/* && tar xzf /backup/friendica-backup.tar.gz -C /"
docker run --rm -v friendica_data:/data -v $(pwd):/backup alpine \
tar xzf /backup/friendica-backup-YYYYMMDD.tar.gz -C /data
docker compose up -d
```
## Links
## Project Homepage
- **Project site:** [Friendica](https://github.com/friendica/friendica)
- **Docker Image:** `docker.io/library/friendica:latest`
- **Issues:** [GitHub Issues](https://github.com/friendica/friendica/issues)
## Prerequisites
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "friendica",
"name": "Friendica",
"description": "Self-hosted Friendica deployment via Docker",
"description": "Decentralized social networking platform in the Fediverse ecosystem",
"version": "1.0.0",
"author": "Arcane",
"tags": [
+86 -57
View File
@@ -1,105 +1,134 @@
# Ghost
Self-hosted Ghost deployment via Docker
Modern publishing platform
This template provides a containerized deployment of [Ghost](ghost) using Docker Compose.
## Project Overview
## Quick Start
1. **Clone and configure:**
```bash
cp .env.example .env
# Edit .env with your configuration
```
2. **Start the service:**
```bash
docker compose up -d
```
3. **Verify it's running:**
```bash
docker compose ps
curl -s http://localhost:8080/ | head -c 200
```
4. **Access the application:**
Open [http://localhost:8080](http://localhost:8080) in your browser.
[Ghost](https://github.com/TryGhost/Ghost) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Ghost in a containerized environment with persistent storage, health checks, and environment-based configuration.
## Architecture
| Component | Image | Purpose |
|-----------|-------|---------|
| `ghost` | docker.io/library/ghost:latest | Main application service |
| `ghost_data` | (volume) | Persistent data storage |
### Services
Services communicate over a shared Docker network. Data is persisted in named volumes.
| Service | Image | Purpose |
|---------|-------|---------|
| `ghost` | `docker.io/library/ghost:latest` | Main application service |
## Configuration
### Volumes
## Configuration
| Volume | Mount | Purpose |
|--------|-------|---------|
| `ghost_data` | (varies) | Persistent data storage |
Environment variables (set in `.env`):
### Health Check
The container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.
### Networks
Uses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.
## Quick Start
### 1. Configure environment
```bash
cp .env.example .env
# Edit .env with your configuration
```
### 2. Start the service
```bash
docker compose up -d
```
### 3. Verify it's running
```bash
docker compose ps
curl -s http://localhost:8080/ | head -c 200
```
### 4. Access the application
Open [http://localhost:8080](http://localhost:8080) in your browser.
## Configuration Reference
### Environment Variables
Set these in your `.env` file (copy from `.env.example`):
| Variable | Default | Description |
|----------|---------|-------------|
| `GHOST_PORT` | `8080` | Configuration variable |
| `GHOST_PORT` | `8080` | ghost host port (default: 8080) |
## Troubleshooting
**Container won't start:**
### Container won't start
Check the logs for error messages:
```bash
docker compose logs ghost
docker compose logs
```
**Port conflict:**
Edit `.env` and change `GHOST_PORT` to an available port, then restart:
### Port conflict
If the default port 8080 is already in use, change it in `.env` and restart:
```bash
# Edit .env and change to an available port
docker compose down && docker compose up -d
```
**Permission errors:**
Ensure the Docker user has write access to the data volume:
### Health check shows unhealthy
The container may need more time to start on first run or low-resource hosts. Check the logs:
```bash
docker compose exec ghost ls -la /data
docker compose logs
```
**Health check failing:**
If needed, increase `start_period` in `docker-compose.yml`.
### Permission errors
Ensure the Docker user has write access to the data volume:
```bash
docker compose ps # Check STATUS column
docker inspect ghost --format='{{json .State.Health}}'
docker compose exec ghost ls -la /data 2>/dev/null || echo "Volume directory not accessible"
```
## Backup & Recovery
**Backup:**
### Backup
Stop the service to ensure data consistency, then back up the data volume:
```bash
# Stop the service
docker compose down
# Backup the data volume
docker run --rm -v ghost_data:/data -v $(pwd):/backup alpine tar czf /backup/ghost-backup-$(date +%Y%m%d).tar.gz /data
# Restart
docker run --rm -v ghost_data:/data -v $(pwd):/backup alpine \
tar czf /backup/ghost-backup-$(date +%Y%m%d).tar.gz -C /data .
docker compose up -d
```
**Restore:**
### Recovery
```bash
docker compose down
docker run --rm -v ghost_data:/data -v $(pwd):/backup alpine sh -c "rm -rf /data/* && tar xzf /backup/ghost-backup.tar.gz -C /"
docker run --rm -v ghost_data:/data -v $(pwd):/backup alpine \
tar xzf /backup/ghost-backup-YYYYMMDD.tar.gz -C /data
docker compose up -d
```
## Links
## Project Homepage
- **Project site:** [Ghost](https://github.com/TryGhost/Ghost)
- **Docker Image:** `docker.io/library/ghost:latest`
- **Issues:** [GitHub Issues](https://github.com/TryGhost/Ghost/issues)
## Prerequisites
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "ghost",
"name": "Ghost",
"description": "Self-hosted Ghost deployment via Docker",
"description": "Modern publishing platform for newsletters, blogs, and membership sites",
"version": "1.0.0",
"author": "Arcane",
"tags": [
+86 -57
View File
@@ -1,105 +1,134 @@
# Grafana
Self-hosted Grafana deployment via Docker
Open-source analytics and monitoring platform
This template provides a containerized deployment of [Grafana](grafana) using Docker Compose.
## Project Overview
## Quick Start
1. **Clone and configure:**
```bash
cp .env.example .env
# Edit .env with your configuration
```
2. **Start the service:**
```bash
docker compose up -d
```
3. **Verify it's running:**
```bash
docker compose ps
curl -s http://localhost:3000/ | head -c 200
```
4. **Access the application:**
Open [http://localhost:3000](http://localhost:3000) in your browser.
[Grafana](https://github.com/grafana/grafana) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Grafana in a containerized environment with persistent storage, health checks, and environment-based configuration.
## Architecture
| Component | Image | Purpose |
|-----------|-------|---------|
| `grafana` | docker.io/grafana/grafana:latest | Main application service |
| `grafana_data` | (volume) | Persistent data storage |
### Services
Services communicate over a shared Docker network. Data is persisted in named volumes.
| Service | Image | Purpose |
|---------|-------|---------|
| `grafana` | `docker.io/grafana/grafana:latest` | Main application service |
## Configuration
### Volumes
## Configuration
| Volume | Mount | Purpose |
|--------|-------|---------|
| `grafana_data` | (varies) | Persistent data storage |
Environment variables (set in `.env`):
### Health Check
The container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.
### Networks
Uses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.
## Quick Start
### 1. Configure environment
```bash
cp .env.example .env
# Edit .env with your configuration
```
### 2. Start the service
```bash
docker compose up -d
```
### 3. Verify it's running
```bash
docker compose ps
curl -s http://localhost:3000/ | head -c 200
```
### 4. Access the application
Open [http://localhost:3000](http://localhost:3000) in your browser.
## Configuration Reference
### Environment Variables
Set these in your `.env` file (copy from `.env.example`):
| Variable | Default | Description |
|----------|---------|-------------|
| `GRAFANA_PORT` | `3000` | Configuration variable |
| `GRAFANA_PORT` | `3000` | Grafana host port (default: 3000) |
## Troubleshooting
**Container won't start:**
### Container won't start
Check the logs for error messages:
```bash
docker compose logs grafana
docker compose logs
```
**Port conflict:**
Edit `.env` and change `GRAFANA_PORT` to an available port, then restart:
### Port conflict
If the default port 3000 is already in use, change it in `.env` and restart:
```bash
# Edit .env and change to an available port
docker compose down && docker compose up -d
```
**Permission errors:**
Ensure the Docker user has write access to the data volume:
### Health check shows unhealthy
The container may need more time to start on first run or low-resource hosts. Check the logs:
```bash
docker compose exec grafana ls -la /data
docker compose logs
```
**Health check failing:**
If needed, increase `start_period` in `docker-compose.yml`.
### Permission errors
Ensure the Docker user has write access to the data volume:
```bash
docker compose ps # Check STATUS column
docker inspect grafana --format='{{json .State.Health}}'
docker compose exec grafana ls -la /data 2>/dev/null || echo "Volume directory not accessible"
```
## Backup & Recovery
**Backup:**
### Backup
Stop the service to ensure data consistency, then back up the data volume:
```bash
# Stop the service
docker compose down
# Backup the data volume
docker run --rm -v grafana_data:/data -v $(pwd):/backup alpine tar czf /backup/grafana-backup-$(date +%Y%m%d).tar.gz /data
# Restart
docker run --rm -v grafana_data:/data -v $(pwd):/backup alpine \
tar czf /backup/grafana-backup-$(date +%Y%m%d).tar.gz -C /data .
docker compose up -d
```
**Restore:**
### Recovery
```bash
docker compose down
docker run --rm -v grafana_data:/data -v $(pwd):/backup alpine sh -c "rm -rf /data/* && tar xzf /backup/grafana-backup.tar.gz -C /"
docker run --rm -v grafana_data:/data -v $(pwd):/backup alpine \
tar xzf /backup/grafana-backup-YYYYMMDD.tar.gz -C /data
docker compose up -d
```
## Links
## Project Homepage
- **Project site:** [Grafana](https://github.com/grafana/grafana)
- **Docker Image:** `docker.io/grafana/grafana:latest`
- **Issues:** [GitHub Issues](https://github.com/grafana/grafana/issues)
## Prerequisites
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "grafana",
"name": "Grafana",
"description": "Self-hosted Grafana deployment via Docker",
"description": "Open-source analytics and interactive visualization web application for infrastructure monitoring",
"version": "1.0.0",
"author": "Arcane",
"tags": [
+3 -1
View File
@@ -5,6 +5,8 @@
"version": "1.0.0",
"author": "Arcane",
"tags": [
"security"
"security",
"devops",
"tools"
]
}
+121 -41
View File
@@ -1,57 +1,137 @@
# Harness — Open-Source CI/CD & DevOps Platform
# Harness
[Harness](https://www.harness.io/) is a modern CI/CD platform that automates the full software delivery pipeline — from code commit through build, test, deploy, and infrastructure provisioning. This is the self-hosted community edition.
AI-native software delivery platform
## Quick Start
## Project Overview
1. **Start the service:**
```bash
docker compose up -d
```
2. **Access the dashboard** at [http://localhost:3000](http://localhost:3000)
3. **Log in** with the admin password from your `.env` file (default: `changeme`).
4. **Enable Docker-in-Docker** by uncommenting the `/var/run/docker.sock` mount in `docker-compose.yml` — required for pipeline execution.
## Configuration
Copy `.env.example` to `.env` and edit:
| Variable | Default | Description |
|-------------------------|--------------|-----------------------------------------------|
| `HARNESS_WEB_PORT` | `3000` | Host port for the web dashboard |
| `HARNESS_SSH_PORT` | `3022` | Host port for SSH-based deployments |
| `HARNESS_MODE` | `standalone` | Deployment mode (standalone or cluster) |
| `HARNESS_ADMIN_PASSWORD`| `changeme` | Admin password — **change for production** |
[Harness](https://github.com/harness/harness) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Harness in a containerized environment with persistent storage, health checks, and environment-based configuration.
## Architecture
- **harness**: Single Docker container running the complete Harness platform — manager, delegate, pipeline engine, and web UI. Self-contained; no external DB required for standalone mode. Optional Docker socket mount enables pipeline execution on the host.
### Services
## Features
| Service | Image | Purpose |
|---------|-------|---------|
| `harness` | `harness/harness:latest` | Main application service |
- **Pipeline automation**: Visual pipeline builder with CI, CD, and custom workflow stages
- **Git triggers**: Start pipelines automatically on push, PR, tag, or schedule
- **Secret management**: Encrypted secrets scoped to projects and environments
- **Approval gates**: Manual and automated approval steps within deployment pipelines
- **Infrastructure as code**: Provision cloud resources directly from pipeline steps
### Volumes
## Docker Socket
| Volume | Mount | Purpose |
|--------|-------|---------|
| `harness_data` | (varies) | Persistent data storage |
The Docker socket mount (`/var/run/docker.sock`) is required for:
- Building Docker images inside pipelines
- Running containers for test or build steps
- Deploying to local Docker hosts
### Networks
It is **commented by default** — uncomment in `docker-compose.yml` when you need pipeline execution.
Uses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.
## Health Check
## Quick Start
### 1. Configure environment
```bash
curl http://localhost:3000/api/health
cp .env.example .env
# Edit .env with your configuration
```
Full documentation: [developer.harness.io](https://developer.harness.io/docs/self-managed-enterprise-edition)
### 2. Start the service
```bash
docker compose up -d
```
### 3. Verify it's running
```bash
docker compose ps
curl -s http://localhost:3000/ | head -c 200
```
### 4. Access the application
Open [http://localhost:3000](http://localhost:3000) in your browser.
## Configuration Reference
### Environment Variables
Set these in your `.env` file (copy from `.env.example`):
| Variable | Default | Description |
|----------|---------|-------------|
| `HARNESS_WEB_PORT` | `3000` | Host port for Harness web UI (default: 3000) |
| `HARNESS_SSH_PORT` | `3022` | Host port for Harness SSH service (default: 3022) |
| `HARNESS_MODE` | `standalone` | Deployment mode: standalone (single-node) or cluster (multi-node) |
| `HARNESS_ADMIN_PASSWORD` | `changeme` | Admin password for the web dashboard (change this!) |
## Troubleshooting
### Container won't start
Check the logs for error messages:
```bash
docker compose logs
```
### Port conflict
If the default port 3000 is already in use, change it in `.env` and restart:
```bash
# Edit .env and change to an available port
docker compose down && docker compose up -d
```
### Health check shows unhealthy
The container may need more time to start on first run or low-resource hosts. Check the logs:
```bash
docker compose logs
```
If needed, increase `start_period` in `docker-compose.yml`.
### Permission errors
Ensure the Docker user has write access to the data volume:
```bash
docker compose exec harness ls -la /data 2>/dev/null || echo "Volume directory not accessible"
```
## Backup & Recovery
### Backup
Stop the service to ensure data consistency, then back up the data volume:
```bash
docker compose down
docker run --rm -v harness_data:/data -v $(pwd):/backup alpine \
tar czf /backup/harness-backup-$(date +%Y%m%d).tar.gz -C /data .
docker compose up -d
```
### Recovery
```bash
docker compose down
docker run --rm -v harness_data:/data -v $(pwd):/backup alpine \
tar xzf /backup/harness-backup-YYYYMMDD.tar.gz -C /data
docker compose up -d
```
## Project Homepage
- **Project site:** [Harness](https://github.com/harness/harness)
- **Docker Image:** `harness/harness:latest`
- **Issues:** [GitHub Issues](https://github.com/harness/harness/issues)
## Prerequisites
- Docker Engine 20.10+
- Docker Compose v2.0+
- 512MB+ RAM recommended
- 1GB+ free disk space for data storage
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "harness",
"name": "Harness",
"description": "Open-source CI/CD and DevOps platform — automate builds, tests, deployments, and infrastructure provisioning from a single dashboard",
"description": "AI-native software delivery platform for CI/CD, feature flags, and chaos engineering",
"version": "1.0.0",
"author": "Arcane",
"tags": [
+3 -1
View File
@@ -5,6 +5,8 @@
"version": "1.0.0",
"author": "Arcane",
"tags": [
"ai"
"ai",
"tools",
"media"
]
}
+3 -1
View File
@@ -5,6 +5,8 @@
"version": "1.0.0",
"author": "Arcane",
"tags": [
"security"
"security",
"tools",
"research"
]
}
+86 -57
View File
@@ -1,105 +1,134 @@
# Joomla
Self-hosted Joomla deployment via Docker
Award-winning CMS
This template provides a containerized deployment of [Joomla](joomla) using Docker Compose.
## Project Overview
## Quick Start
1. **Clone and configure:**
```bash
cp .env.example .env
# Edit .env with your configuration
```
2. **Start the service:**
```bash
docker compose up -d
```
3. **Verify it's running:**
```bash
docker compose ps
curl -s http://localhost:8080/ | head -c 200
```
4. **Access the application:**
Open [http://localhost:8080](http://localhost:8080) in your browser.
[Joomla](https://github.com/joomla/joomla-cms) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Joomla in a containerized environment with persistent storage, health checks, and environment-based configuration.
## Architecture
| Component | Image | Purpose |
|-----------|-------|---------|
| `joomla` | docker.io/amd64/joomla:latest | Main application service |
| `joomla_data` | (volume) | Persistent data storage |
### Services
Services communicate over a shared Docker network. Data is persisted in named volumes.
| Service | Image | Purpose |
|---------|-------|---------|
| `joomla` | `docker.io/amd64/joomla:latest` | Main application service |
## Configuration
### Volumes
## Configuration
| Volume | Mount | Purpose |
|--------|-------|---------|
| `joomla_data` | (varies) | Persistent data storage |
Environment variables (set in `.env`):
### Health Check
The container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.
### Networks
Uses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.
## Quick Start
### 1. Configure environment
```bash
cp .env.example .env
# Edit .env with your configuration
```
### 2. Start the service
```bash
docker compose up -d
```
### 3. Verify it's running
```bash
docker compose ps
curl -s http://localhost:8080/ | head -c 200
```
### 4. Access the application
Open [http://localhost:8080](http://localhost:8080) in your browser.
## Configuration Reference
### Environment Variables
Set these in your `.env` file (copy from `.env.example`):
| Variable | Default | Description |
|----------|---------|-------------|
| `JOOMLA_PORT` | `8080` | Configuration variable |
| `JOOMLA_PORT` | `8080` | Joomla host port (default: 8080) |
## Troubleshooting
**Container won't start:**
### Container won't start
Check the logs for error messages:
```bash
docker compose logs joomla
docker compose logs
```
**Port conflict:**
Edit `.env` and change `JOOMLA_PORT` to an available port, then restart:
### Port conflict
If the default port 8080 is already in use, change it in `.env` and restart:
```bash
# Edit .env and change to an available port
docker compose down && docker compose up -d
```
**Permission errors:**
Ensure the Docker user has write access to the data volume:
### Health check shows unhealthy
The container may need more time to start on first run or low-resource hosts. Check the logs:
```bash
docker compose exec joomla ls -la /data
docker compose logs
```
**Health check failing:**
If needed, increase `start_period` in `docker-compose.yml`.
### Permission errors
Ensure the Docker user has write access to the data volume:
```bash
docker compose ps # Check STATUS column
docker inspect joomla --format='{{json .State.Health}}'
docker compose exec joomla ls -la /data 2>/dev/null || echo "Volume directory not accessible"
```
## Backup & Recovery
**Backup:**
### Backup
Stop the service to ensure data consistency, then back up the data volume:
```bash
# Stop the service
docker compose down
# Backup the data volume
docker run --rm -v joomla_data:/data -v $(pwd):/backup alpine tar czf /backup/joomla-backup-$(date +%Y%m%d).tar.gz /data
# Restart
docker run --rm -v joomla_data:/data -v $(pwd):/backup alpine \
tar czf /backup/joomla-backup-$(date +%Y%m%d).tar.gz -C /data .
docker compose up -d
```
**Restore:**
### Recovery
```bash
docker compose down
docker run --rm -v joomla_data:/data -v $(pwd):/backup alpine sh -c "rm -rf /data/* && tar xzf /backup/joomla-backup.tar.gz -C /"
docker run --rm -v joomla_data:/data -v $(pwd):/backup alpine \
tar xzf /backup/joomla-backup-YYYYMMDD.tar.gz -C /data
docker compose up -d
```
## Links
## Project Homepage
- **Project site:** [Joomla](https://github.com/joomla/joomla-cms)
- **Docker Image:** `docker.io/amd64/joomla:latest`
- **Issues:** [GitHub Issues](https://github.com/joomla/joomla-cms/issues)
## Prerequisites
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "joomla",
"name": "Joomla",
"description": "Self-hosted Joomla deployment via Docker",
"description": "Award-winning open-source content management system for building websites",
"version": "1.0.0",
"author": "Arcane",
"tags": [
+3 -3
View File
@@ -13,9 +13,9 @@ KHOJ_OPENAI_MODEL=gpt-4o-mini
# Option 2: Local / Custom LLM (e.g., Ollama, LM Studio)
# Uncomment and set these to use a local model:
# KHOJ_LLM_MODEL_NAME=llama3.1:8b
# KHOJ_LLM_API_KEY=anything
# KHOJ_LLM_API_BASE_URL=http://host.docker.internal:11434
KHOJ_LLM_MODEL_NAME=llama3.1:8b
KHOJ_LLM_API_KEY=anything
KHOJ_LLM_API_BASE_URL=http://host.docker.internal:11434
# ── Search Embedding Model ───────────────────────────────────────────
KHOJ_SEARCH_MODEL=sentence-transformers/all-MiniLM-L6-v2
+4 -1
View File
@@ -1,4 +1,7 @@
# Host port for Kong proxy
# Host port for Kong proxy (host port mapping in docker-compose.yml)
KONG_PORT=8000
# Host port for Kong proxy (Kong internal config)
KONG_PROXY_PORT=8000
# Host port for Kong Admin API
+1 -1
View File
@@ -1,3 +1,3 @@
# Host port for LangFlow web UI
LANGLOW_PORT=7860
LANGFLOW_PORT=7860
+1 -1
View File
@@ -9,5 +9,5 @@ services:
- "${LANGFLOW_PORT:-7860}:7860"
restart: unless-stopped
environment:
- LANGLOW_PORT=${LANGLOW_PORT:-7860}
- LANGFLOW_PORT=${LANGFLOW_PORT:-7860}
+5 -5
View File
@@ -20,16 +20,16 @@ DATABASE_URL=
# At least one provider key is required for routing. Uncomment the ones you use.
# OpenAI
# OPENAI_API_KEY=sk-your-openai-key
OPENAI_API_KEY=sk-your-openai-key
# Anthropic
# ANTHROPIC_API_KEY=sk-ant-your-anthropic-key
ANTHROPIC_API_KEY=sk-ant-your-anthropic-key
# Google Gemini
# GEMINI_API_KEY=your-gemini-api-key
GEMINI_API_KEY=your-gemini-api-key
# Cohere
# COHERE_API_KEY=your-cohere-key
COHERE_API_KEY=your-cohere-key
# Together AI
# TOGETHERAI_API_KEY=your-togetherai-key
TOGETHERAI_API_KEY=your-togetherai-key
+86 -57
View File
@@ -1,105 +1,134 @@
# Matomo
Self-hosted Matomo deployment via Docker
Privacy-friendly web analytics
This template provides a containerized deployment of [Matomo](matomo) using Docker Compose.
## Project Overview
## Quick Start
1. **Clone and configure:**
```bash
cp .env.example .env
# Edit .env with your configuration
```
2. **Start the service:**
```bash
docker compose up -d
```
3. **Verify it's running:**
```bash
docker compose ps
curl -s http://localhost:8080/ | head -c 200
```
4. **Access the application:**
Open [http://localhost:8080](http://localhost:8080) in your browser.
[Matomo](https://github.com/matomo-org/matomo) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Matomo in a containerized environment with persistent storage, health checks, and environment-based configuration.
## Architecture
| Component | Image | Purpose |
|-----------|-------|---------|
| `matomo` | docker.io/library/matomo:latest | Main application service |
| `matomo_data` | (volume) | Persistent data storage |
### Services
Services communicate over a shared Docker network. Data is persisted in named volumes.
| Service | Image | Purpose |
|---------|-------|---------|
| `matomo` | `docker.io/library/matomo:latest` | Main application service |
## Configuration
### Volumes
## Configuration
| Volume | Mount | Purpose |
|--------|-------|---------|
| `matomo_data` | (varies) | Persistent data storage |
Environment variables (set in `.env`):
### Health Check
The container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.
### Networks
Uses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.
## Quick Start
### 1. Configure environment
```bash
cp .env.example .env
# Edit .env with your configuration
```
### 2. Start the service
```bash
docker compose up -d
```
### 3. Verify it's running
```bash
docker compose ps
curl -s http://localhost:8080/ | head -c 200
```
### 4. Access the application
Open [http://localhost:8080](http://localhost:8080) in your browser.
## Configuration Reference
### Environment Variables
Set these in your `.env` file (copy from `.env.example`):
| Variable | Default | Description |
|----------|---------|-------------|
| `MATOMO_PORT` | `8080` | Configuration variable |
| `MATOMO_PORT` | `8080` | Matomo host port (default: 8080) |
## Troubleshooting
**Container won't start:**
### Container won't start
Check the logs for error messages:
```bash
docker compose logs matomo
docker compose logs
```
**Port conflict:**
Edit `.env` and change `MATOMO_PORT` to an available port, then restart:
### Port conflict
If the default port 8080 is already in use, change it in `.env` and restart:
```bash
# Edit .env and change to an available port
docker compose down && docker compose up -d
```
**Permission errors:**
Ensure the Docker user has write access to the data volume:
### Health check shows unhealthy
The container may need more time to start on first run or low-resource hosts. Check the logs:
```bash
docker compose exec matomo ls -la /data
docker compose logs
```
**Health check failing:**
If needed, increase `start_period` in `docker-compose.yml`.
### Permission errors
Ensure the Docker user has write access to the data volume:
```bash
docker compose ps # Check STATUS column
docker inspect matomo --format='{{json .State.Health}}'
docker compose exec matomo ls -la /data 2>/dev/null || echo "Volume directory not accessible"
```
## Backup & Recovery
**Backup:**
### Backup
Stop the service to ensure data consistency, then back up the data volume:
```bash
# Stop the service
docker compose down
# Backup the data volume
docker run --rm -v matomo_data:/data -v $(pwd):/backup alpine tar czf /backup/matomo-backup-$(date +%Y%m%d).tar.gz /data
# Restart
docker run --rm -v matomo_data:/data -v $(pwd):/backup alpine \
tar czf /backup/matomo-backup-$(date +%Y%m%d).tar.gz -C /data .
docker compose up -d
```
**Restore:**
### Recovery
```bash
docker compose down
docker run --rm -v matomo_data:/data -v $(pwd):/backup alpine sh -c "rm -rf /data/* && tar xzf /backup/matomo-backup.tar.gz -C /"
docker run --rm -v matomo_data:/data -v $(pwd):/backup alpine \
tar xzf /backup/matomo-backup-YYYYMMDD.tar.gz -C /data
docker compose up -d
```
## Links
## Project Homepage
- **Project site:** [Matomo](https://github.com/matomo-org/matomo)
- **Docker Image:** `docker.io/library/matomo:latest`
- **Issues:** [GitHub Issues](https://github.com/matomo-org/matomo/issues)
## Prerequisites
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "matomo",
"name": "Matomo",
"description": "Self-hosted Matomo deployment via Docker",
"description": "Open-source web analytics platform — a privacy-friendly alternative to Google Analytics",
"version": "1.0.0",
"author": "Arcane",
"tags": [
+3 -1
View File
@@ -5,6 +5,8 @@
"version": "1.0.0",
"author": "Arcane",
"tags": [
"chat"
"chat",
"communication",
"infrastructure"
]
}
+86 -57
View File
@@ -1,105 +1,134 @@
# Mediawiki
Self-hosted Mediawiki deployment via Docker
Collaborative wiki platform
This template provides a containerized deployment of [Mediawiki](mediawiki) using Docker Compose.
## Project Overview
## Quick Start
1. **Clone and configure:**
```bash
cp .env.example .env
# Edit .env with your configuration
```
2. **Start the service:**
```bash
docker compose up -d
```
3. **Verify it's running:**
```bash
docker compose ps
curl -s http://localhost:80/ | head -c 200
```
4. **Access the application:**
Open [http://localhost:80](http://localhost:80) in your browser.
[Mediawiki](https://github.com/wikimedia/mediawiki) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Mediawiki in a containerized environment with persistent storage, health checks, and environment-based configuration.
## Architecture
| Component | Image | Purpose |
|-----------|-------|---------|
| `mediawiki` | docker.io/library/mediawiki:latest | Main application service |
| `mediawiki_data` | (volume) | Persistent data storage |
### Services
Services communicate over a shared Docker network. Data is persisted in named volumes.
| Service | Image | Purpose |
|---------|-------|---------|
| `mediawiki` | `docker.io/library/mediawiki:latest` | Main application service |
## Configuration
### Volumes
## Configuration
| Volume | Mount | Purpose |
|--------|-------|---------|
| `mediawiki_data` | (varies) | Persistent data storage |
Environment variables (set in `.env`):
### Health Check
The container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.
### Networks
Uses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.
## Quick Start
### 1. Configure environment
```bash
cp .env.example .env
# Edit .env with your configuration
```
### 2. Start the service
```bash
docker compose up -d
```
### 3. Verify it's running
```bash
docker compose ps
curl -s http://localhost:80/ | head -c 200
```
### 4. Access the application
Open [http://localhost:80](http://localhost:80) in your browser.
## Configuration Reference
### Environment Variables
Set these in your `.env` file (copy from `.env.example`):
| Variable | Default | Description |
|----------|---------|-------------|
| `MEDIAWIKI_PORT` | `80` | Configuration variable |
| `MEDIAWIKI_PORT` | `80` | mediawiki host port (default: 80) |
## Troubleshooting
**Container won't start:**
### Container won't start
Check the logs for error messages:
```bash
docker compose logs mediawiki
docker compose logs
```
**Port conflict:**
Edit `.env` and change `MEDIAWIKI_PORT` to an available port, then restart:
### Port conflict
If the default port 80 is already in use, change it in `.env` and restart:
```bash
# Edit .env and change to an available port
docker compose down && docker compose up -d
```
**Permission errors:**
Ensure the Docker user has write access to the data volume:
### Health check shows unhealthy
The container may need more time to start on first run or low-resource hosts. Check the logs:
```bash
docker compose exec mediawiki ls -la /data
docker compose logs
```
**Health check failing:**
If needed, increase `start_period` in `docker-compose.yml`.
### Permission errors
Ensure the Docker user has write access to the data volume:
```bash
docker compose ps # Check STATUS column
docker inspect mediawiki --format='{{json .State.Health}}'
docker compose exec mediawiki ls -la /data 2>/dev/null || echo "Volume directory not accessible"
```
## Backup & Recovery
**Backup:**
### Backup
Stop the service to ensure data consistency, then back up the data volume:
```bash
# Stop the service
docker compose down
# Backup the data volume
docker run --rm -v mediawiki_data:/data -v $(pwd):/backup alpine tar czf /backup/mediawiki-backup-$(date +%Y%m%d).tar.gz /data
# Restart
docker run --rm -v mediawiki_data:/data -v $(pwd):/backup alpine \
tar czf /backup/mediawiki-backup-$(date +%Y%m%d).tar.gz -C /data .
docker compose up -d
```
**Restore:**
### Recovery
```bash
docker compose down
docker run --rm -v mediawiki_data:/data -v $(pwd):/backup alpine sh -c "rm -rf /data/* && tar xzf /backup/mediawiki-backup.tar.gz -C /"
docker run --rm -v mediawiki_data:/data -v $(pwd):/backup alpine \
tar xzf /backup/mediawiki-backup-YYYYMMDD.tar.gz -C /data
docker compose up -d
```
## Links
## Project Homepage
- **Project site:** [Mediawiki](https://github.com/wikimedia/mediawiki)
- **Docker Image:** `docker.io/library/mediawiki:latest`
- **Issues:** [GitHub Issues](https://github.com/wikimedia/mediawiki/issues)
## Prerequisites
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "mediawiki",
"name": "Mediawiki",
"description": "Self-hosted Mediawiki deployment via Docker",
"description": "The wiki engine that powers Wikipedia — collaborative documentation platform",
"version": "1.0.0",
"author": "Arcane",
"tags": [
+6
View File
@@ -8,6 +8,12 @@ MILVUS_PORT=19530
# Host port for the etcd client API (default: 2379)
ETCD_PORT=2379
# Host port for etcd peer communication (default: 2380)
ETCD_PEER_PORT=2380
# Set to false when using external etcd (defined in docker-compose.yml)
ETCD_USE_EMBED=false
# ── MinIO (Object Storage) ───────────────────────────────────────────
# Host port for the MinIO S3-compatible API (default: 9000)
MINIO_PORT=9000
+86 -57
View File
@@ -1,105 +1,134 @@
# Minio
Self-hosted Minio deployment via Docker
S3-compatible object storage
This template provides a containerized deployment of [Minio](minio) using Docker Compose.
## Project Overview
## Quick Start
1. **Clone and configure:**
```bash
cp .env.example .env
# Edit .env with your configuration
```
2. **Start the service:**
```bash
docker compose up -d
```
3. **Verify it's running:**
```bash
docker compose ps
curl -s http://localhost:9000/ | head -c 200
```
4. **Access the application:**
Open [http://localhost:9000](http://localhost:9000) in your browser.
[Minio](https://github.com/minio/minio) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Minio in a containerized environment with persistent storage, health checks, and environment-based configuration.
## Architecture
| Component | Image | Purpose |
|-----------|-------|---------|
| `minio` | docker.io/minio/minio:latest | Main application service |
| `minio_data` | (volume) | Persistent data storage |
### Services
Services communicate over a shared Docker network. Data is persisted in named volumes.
| Service | Image | Purpose |
|---------|-------|---------|
| `minio` | `docker.io/minio/minio:latest` | Main application service |
## Configuration
### Volumes
## Configuration
| Volume | Mount | Purpose |
|--------|-------|---------|
| `minio_data` | (varies) | Persistent data storage |
Environment variables (set in `.env`):
### Health Check
The container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.
### Networks
Uses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.
## Quick Start
### 1. Configure environment
```bash
cp .env.example .env
# Edit .env with your configuration
```
### 2. Start the service
```bash
docker compose up -d
```
### 3. Verify it's running
```bash
docker compose ps
curl -s http://localhost:9000/ | head -c 200
```
### 4. Access the application
Open [http://localhost:9000](http://localhost:9000) in your browser.
## Configuration Reference
### Environment Variables
Set these in your `.env` file (copy from `.env.example`):
| Variable | Default | Description |
|----------|---------|-------------|
| `MINIO_PORT` | `9000` | Configuration variable |
| `MINIO_PORT` | `9000` | MinIO host port (default: 9000) |
## Troubleshooting
**Container won't start:**
### Container won't start
Check the logs for error messages:
```bash
docker compose logs minio
docker compose logs
```
**Port conflict:**
Edit `.env` and change `MINIO_PORT` to an available port, then restart:
### Port conflict
If the default port 9000 is already in use, change it in `.env` and restart:
```bash
# Edit .env and change to an available port
docker compose down && docker compose up -d
```
**Permission errors:**
Ensure the Docker user has write access to the data volume:
### Health check shows unhealthy
The container may need more time to start on first run or low-resource hosts. Check the logs:
```bash
docker compose exec minio ls -la /data
docker compose logs
```
**Health check failing:**
If needed, increase `start_period` in `docker-compose.yml`.
### Permission errors
Ensure the Docker user has write access to the data volume:
```bash
docker compose ps # Check STATUS column
docker inspect minio --format='{{json .State.Health}}'
docker compose exec minio ls -la /data 2>/dev/null || echo "Volume directory not accessible"
```
## Backup & Recovery
**Backup:**
### Backup
Stop the service to ensure data consistency, then back up the data volume:
```bash
# Stop the service
docker compose down
# Backup the data volume
docker run --rm -v minio_data:/data -v $(pwd):/backup alpine tar czf /backup/minio-backup-$(date +%Y%m%d).tar.gz /data
# Restart
docker run --rm -v minio_data:/data -v $(pwd):/backup alpine \
tar czf /backup/minio-backup-$(date +%Y%m%d).tar.gz -C /data .
docker compose up -d
```
**Restore:**
### Recovery
```bash
docker compose down
docker run --rm -v minio_data:/data -v $(pwd):/backup alpine sh -c "rm -rf /data/* && tar xzf /backup/minio-backup.tar.gz -C /"
docker run --rm -v minio_data:/data -v $(pwd):/backup alpine \
tar xzf /backup/minio-backup-YYYYMMDD.tar.gz -C /data
docker compose up -d
```
## Links
## Project Homepage
- **Project site:** [Minio](https://github.com/minio/minio)
- **Docker Image:** `docker.io/minio/minio:latest`
- **Issues:** [GitHub Issues](https://github.com/minio/minio/issues)
## Prerequisites
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "minio",
"name": "Minio",
"description": "Self-hosted Minio deployment via Docker",
"description": "High-performance, S3-compatible object storage for AI and data workloads",
"version": "1.0.0",
"author": "Arcane",
"tags": [
+3 -1
View File
@@ -5,6 +5,8 @@
"version": "1.0.0",
"author": "Arcane",
"tags": [
"chat"
"chat",
"communication",
"tools"
]
}
+2 -2
View File
@@ -6,12 +6,12 @@ MLFLOW_PORT=5000
# ── Optional: Backend Store ────────────────────────────────────────────
# By default, MLflow uses local filesystem storage at /app/mlruns.
# MLFLOW_BACKEND_STORE_URI=/app/mlruns
MLFLOW_BACKEND_STORE_URI=/app/mlruns
# For production, configure a database-backed store (PostgreSQL, MySQL):
# MLFLOW_BACKEND_STORE_URI=postgresql://user:password@host:5432/mlflow
# ── Optional: Artifact Root ────────────────────────────────────────────
# By default, MLflow stores artifacts locally at /app/mlartifacts.
# MLFLOW_ARTIFACT_ROOT=/app/mlartifacts
MLFLOW_ARTIFACT_ROOT=/app/mlartifacts
# For production, configure S3-compatible or GCS storage:
# MLFLOW_ARTIFACT_ROOT=s3://my-bucket/mlflow-artifacts/
+3 -1
View File
@@ -5,6 +5,8 @@
"version": "1.0.0",
"author": "Arcane",
"tags": [
"ai"
"ai",
"tools",
"workflow"
]
}
+86 -57
View File
@@ -1,105 +1,134 @@
# Monica
Self-hosted Monica deployment via Docker
Personal relationship manager
This template provides a containerized deployment of [Monica](monica) using Docker Compose.
## Project Overview
## Quick Start
1. **Clone and configure:**
```bash
cp .env.example .env
# Edit .env with your configuration
```
2. **Start the service:**
```bash
docker compose up -d
```
3. **Verify it's running:**
```bash
docker compose ps
curl -s http://localhost:8080/ | head -c 200
```
4. **Access the application:**
Open [http://localhost:8080](http://localhost:8080) in your browser.
[Monica](https://github.com/monicahq/monica) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Monica in a containerized environment with persistent storage, health checks, and environment-based configuration.
## Architecture
| Component | Image | Purpose |
|-----------|-------|---------|
| `monica` | docker.io/library/monica:latest | Main application service |
| `monica_data` | (volume) | Persistent data storage |
### Services
Services communicate over a shared Docker network. Data is persisted in named volumes.
| Service | Image | Purpose |
|---------|-------|---------|
| `monica` | `docker.io/library/monica:latest` | Main application service |
## Configuration
### Volumes
## Configuration
| Volume | Mount | Purpose |
|--------|-------|---------|
| `monica_data` | (varies) | Persistent data storage |
Environment variables (set in `.env`):
### Health Check
The container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.
### Networks
Uses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.
## Quick Start
### 1. Configure environment
```bash
cp .env.example .env
# Edit .env with your configuration
```
### 2. Start the service
```bash
docker compose up -d
```
### 3. Verify it's running
```bash
docker compose ps
curl -s http://localhost:8080/ | head -c 200
```
### 4. Access the application
Open [http://localhost:8080](http://localhost:8080) in your browser.
## Configuration Reference
### Environment Variables
Set these in your `.env` file (copy from `.env.example`):
| Variable | Default | Description |
|----------|---------|-------------|
| `MONICA_PORT` | `8080` | Configuration variable |
| `MONICA_PORT` | `8080` | Monica host port (default: 8080) |
## Troubleshooting
**Container won't start:**
### Container won't start
Check the logs for error messages:
```bash
docker compose logs monica
docker compose logs
```
**Port conflict:**
Edit `.env` and change `MONICA_PORT` to an available port, then restart:
### Port conflict
If the default port 8080 is already in use, change it in `.env` and restart:
```bash
# Edit .env and change to an available port
docker compose down && docker compose up -d
```
**Permission errors:**
Ensure the Docker user has write access to the data volume:
### Health check shows unhealthy
The container may need more time to start on first run or low-resource hosts. Check the logs:
```bash
docker compose exec monica ls -la /data
docker compose logs
```
**Health check failing:**
If needed, increase `start_period` in `docker-compose.yml`.
### Permission errors
Ensure the Docker user has write access to the data volume:
```bash
docker compose ps # Check STATUS column
docker inspect monica --format='{{json .State.Health}}'
docker compose exec monica ls -la /data 2>/dev/null || echo "Volume directory not accessible"
```
## Backup & Recovery
**Backup:**
### Backup
Stop the service to ensure data consistency, then back up the data volume:
```bash
# Stop the service
docker compose down
# Backup the data volume
docker run --rm -v monica_data:/data -v $(pwd):/backup alpine tar czf /backup/monica-backup-$(date +%Y%m%d).tar.gz /data
# Restart
docker run --rm -v monica_data:/data -v $(pwd):/backup alpine \
tar czf /backup/monica-backup-$(date +%Y%m%d).tar.gz -C /data .
docker compose up -d
```
**Restore:**
### Recovery
```bash
docker compose down
docker run --rm -v monica_data:/data -v $(pwd):/backup alpine sh -c "rm -rf /data/* && tar xzf /backup/monica-backup.tar.gz -C /"
docker run --rm -v monica_data:/data -v $(pwd):/backup alpine \
tar xzf /backup/monica-backup-YYYYMMDD.tar.gz -C /data
docker compose up -d
```
## Links
## Project Homepage
- **Project site:** [Monica](https://github.com/monicahq/monica)
- **Docker Image:** `docker.io/library/monica:latest`
- **Issues:** [GitHub Issues](https://github.com/monicahq/monica/issues)
## Prerequisites
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "monica",
"name": "Monica",
"description": "Self-hosted Monica deployment via Docker",
"description": "Open-source personal relationship manager (PRM) for managing contacts",
"version": "1.0.0",
"author": "Arcane",
"tags": [
+86 -57
View File
@@ -1,105 +1,134 @@
# Nextcloud
Self-hosted content collaboration platform with file sync, calendar, contacts, and extensive app ecosystem
Self-hosted productivity platform
This template provides a containerized deployment of [Nextcloud](nextcloud) using Docker Compose.
## Project Overview
## Quick Start
1. **Clone and configure:**
```bash
cp .env.example .env
# Edit .env with your configuration
```
2. **Start the service:**
```bash
docker compose up -d
```
3. **Verify it's running:**
```bash
docker compose ps
curl -s http://localhost:80/ | head -c 200
```
4. **Access the application:**
Open [http://localhost:80](http://localhost:80) in your browser.
[Nextcloud](https://github.com/nextcloud/server) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Nextcloud in a containerized environment with persistent storage, health checks, and environment-based configuration.
## Architecture
| Component | Image | Purpose |
|-----------|-------|---------|
| `nextcloud` | docker.io/library/nextcloud:latest | Main application service |
| `nextcloud_data` | (volume) | Persistent data storage |
### Services
Services communicate over a shared Docker network. Data is persisted in named volumes.
| Service | Image | Purpose |
|---------|-------|---------|
| `nextcloud` | `docker.io/library/nextcloud:latest` | Main application service |
## Configuration
### Volumes
## Configuration
| Volume | Mount | Purpose |
|--------|-------|---------|
| `nextcloud_data` | (varies) | Persistent data storage |
Environment variables (set in `.env`):
### Health Check
The container runs a health check every 30s (3 retries, 60s start period). Docker will report the container as unhealthy if the endpoint fails consistently.
### Networks
Uses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.
## Quick Start
### 1. Configure environment
```bash
cp .env.example .env
# Edit .env with your configuration
```
### 2. Start the service
```bash
docker compose up -d
```
### 3. Verify it's running
```bash
docker compose ps
curl -s http://localhost:80/ | head -c 200
```
### 4. Access the application
Open [http://localhost:80](http://localhost:80) in your browser.
## Configuration Reference
### Environment Variables
Set these in your `.env` file (copy from `.env.example`):
| Variable | Default | Description |
|----------|---------|-------------|
| `NEXTCLOUD_PORT` | `80` | Configuration variable |
| `NEXTCLOUD_PORT` | `80` | nextcloud host port (default: 80) |
## Troubleshooting
**Container won't start:**
### Container won't start
Check the logs for error messages:
```bash
docker compose logs nextcloud
docker compose logs
```
**Port conflict:**
Edit `.env` and change `NEXTCLOUD_PORT` to an available port, then restart:
### Port conflict
If the default port 80 is already in use, change it in `.env` and restart:
```bash
# Edit .env and change to an available port
docker compose down && docker compose up -d
```
**Permission errors:**
Ensure the Docker user has write access to the data volume:
### Health check shows unhealthy
The container may need more time to start on first run or low-resource hosts. Check the logs:
```bash
docker compose exec nextcloud ls -la /data
docker compose logs
```
**Health check failing:**
If needed, increase `start_period` in `docker-compose.yml`.
### Permission errors
Ensure the Docker user has write access to the data volume:
```bash
docker compose ps # Check STATUS column
docker inspect nextcloud --format='{{json .State.Health}}'
docker compose exec nextcloud ls -la /data 2>/dev/null || echo "Volume directory not accessible"
```
## Backup & Recovery
**Backup:**
### Backup
Stop the service to ensure data consistency, then back up the data volume:
```bash
# Stop the service
docker compose down
# Backup the data volume
docker run --rm -v nextcloud_data:/data -v $(pwd):/backup alpine tar czf /backup/nextcloud-backup-$(date +%Y%m%d).tar.gz /data
# Restart
docker run --rm -v nextcloud_data:/data -v $(pwd):/backup alpine \
tar czf /backup/nextcloud-backup-$(date +%Y%m%d).tar.gz -C /data .
docker compose up -d
```
**Restore:**
### Recovery
```bash
docker compose down
docker run --rm -v nextcloud_data:/data -v $(pwd):/backup alpine sh -c "rm -rf /data/* && tar xzf /backup/nextcloud-backup.tar.gz -C /"
docker run --rm -v nextcloud_data:/data -v $(pwd):/backup alpine \
tar xzf /backup/nextcloud-backup-YYYYMMDD.tar.gz -C /data
docker compose up -d
```
## Links
## Project Homepage
- **Project site:** [Nextcloud](https://github.com/nextcloud/server)
- **Docker Image:** `docker.io/library/nextcloud:latest`
- **Issues:** [GitHub Issues](https://github.com/nextcloud/server/issues)
## Prerequisites
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "nextcloud",
"name": "Nextcloud",
"description": "Self-hosted content collaboration platform with file sync, calendar, contacts, and extensive app ecosystem",
"description": "Self-hosted productivity platform files, calendar, contacts, and collaboration",
"version": "1.0.0",
"author": "Arcane",
"tags": [
+3 -1
View File
@@ -5,7 +5,9 @@
"version": "1.0.0",
"author": "Arcane",
"tags": [
"devops"
"devops",
"proxy",
"web"
],
"upstream": {
"repo": "0xJacky/nginx-ui",
+86 -57
View File
@@ -1,105 +1,134 @@
# Nginx
Self-hosted Nginx deployment via Docker
High-performance HTTP server and reverse proxy
This template provides a containerized deployment of [Nginx](nginx) using Docker Compose.
## Project Overview
## Quick Start
1. **Clone and configure:**
```bash
cp .env.example .env
# Edit .env with your configuration
```
2. **Start the service:**
```bash
docker compose up -d
```
3. **Verify it's running:**
```bash
docker compose ps
curl -s http://localhost:8080/ | head -c 200
```
4. **Access the application:**
Open [http://localhost:8080](http://localhost:8080) in your browser.
[Nginx](https://github.com/nginx/nginx) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Nginx in a containerized environment with persistent storage, health checks, and environment-based configuration.
## Architecture
| Component | Image | Purpose |
|-----------|-------|---------|
| `nginx` | docker.io/library/nginx:latest | Main application service |
| `nginx_data` | (volume) | Persistent data storage |
### Services
Services communicate over a shared Docker network. Data is persisted in named volumes.
| Service | Image | Purpose |
|---------|-------|---------|
| `nginx` | `docker.io/library/nginx:latest` | Reverse proxy / web server |
## Configuration
### Volumes
## Configuration
| Volume | Mount | Purpose |
|--------|-------|---------|
| `nginx_data` | (varies) | Persistent data storage |
Environment variables (set in `.env`):
### Health Check
The container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.
### Networks
Uses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.
## Quick Start
### 1. Configure environment
```bash
cp .env.example .env
# Edit .env with your configuration
```
### 2. Start the service
```bash
docker compose up -d
```
### 3. Verify it's running
```bash
docker compose ps
curl -s http://localhost:8080/ | head -c 200
```
### 4. Access the application
Open [http://localhost:8080](http://localhost:8080) in your browser.
## Configuration Reference
### Environment Variables
Set these in your `.env` file (copy from `.env.example`):
| Variable | Default | Description |
|----------|---------|-------------|
| `NGINX_PORT` | `8080` | Configuration variable |
| `NGINX_PORT` | `8080` | Nginx host port (default: 8080) |
## Troubleshooting
**Container won't start:**
### Container won't start
Check the logs for error messages:
```bash
docker compose logs nginx
docker compose logs
```
**Port conflict:**
Edit `.env` and change `NGINX_PORT` to an available port, then restart:
### Port conflict
If the default port 8080 is already in use, change it in `.env` and restart:
```bash
# Edit .env and change to an available port
docker compose down && docker compose up -d
```
**Permission errors:**
Ensure the Docker user has write access to the data volume:
### Health check shows unhealthy
The container may need more time to start on first run or low-resource hosts. Check the logs:
```bash
docker compose exec nginx ls -la /data
docker compose logs
```
**Health check failing:**
If needed, increase `start_period` in `docker-compose.yml`.
### Permission errors
Ensure the Docker user has write access to the data volume:
```bash
docker compose ps # Check STATUS column
docker inspect nginx --format='{{json .State.Health}}'
docker compose exec nginx ls -la /data 2>/dev/null || echo "Volume directory not accessible"
```
## Backup & Recovery
**Backup:**
### Backup
Stop the service to ensure data consistency, then back up the data volume:
```bash
# Stop the service
docker compose down
# Backup the data volume
docker run --rm -v nginx_data:/data -v $(pwd):/backup alpine tar czf /backup/nginx-backup-$(date +%Y%m%d).tar.gz /data
# Restart
docker run --rm -v nginx_data:/data -v $(pwd):/backup alpine \
tar czf /backup/nginx-backup-$(date +%Y%m%d).tar.gz -C /data .
docker compose up -d
```
**Restore:**
### Recovery
```bash
docker compose down
docker run --rm -v nginx_data:/data -v $(pwd):/backup alpine sh -c "rm -rf /data/* && tar xzf /backup/nginx-backup.tar.gz -C /"
docker run --rm -v nginx_data:/data -v $(pwd):/backup alpine \
tar xzf /backup/nginx-backup-YYYYMMDD.tar.gz -C /data
docker compose up -d
```
## Links
## Project Homepage
- **Project site:** [Nginx](https://github.com/nginx/nginx)
- **Docker Image:** `docker.io/library/nginx:latest`
- **Issues:** [GitHub Issues](https://github.com/nginx/nginx/issues)
## Prerequisites
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "nginx",
"name": "Nginx",
"description": "Self-hosted Nginx deployment via Docker",
"description": "High-performance HTTP server, reverse proxy, and load balancer",
"version": "1.0.0",
"author": "Arcane",
"tags": [
+4 -1
View File
@@ -5,6 +5,9 @@
"version": "1.0.0",
"author": "Arcane",
"tags": [
"security"
"security",
"authentication",
"identity",
"api"
]
}
+123 -34
View File
@@ -1,47 +1,136 @@
# Parseable — Cloud-Native Log Observability
# Parseable
[Parseable](https://www.parseable.io/) is a high-performance, cloud-native log observability engine. It ingests, stores, and indexes logs using an S3-compatible object store backend, giving you petabyte-scale log management without managing Elasticsearch clusters.
Observability platform for logs
## Quick Start
## Project Overview
1. **Start the service:**
```bash
docker compose up -d
```
2. **Access the dashboard** at [http://localhost:8000](http://localhost:8000)
3. **Log in** with the credentials from your `.env` file (default: `admin` / `changeme`).
4. **Send logs** using the built-in ingestion API, Fluent Bit, Vector, or any OpenTelemetry-compatible agent.
## Configuration
Copy `.env.example` to `.env` and edit:
| Variable | Default | Description |
|-----------------------|------------|-----------------------------------------------|
| `PARSEABLE_PORT` | `8000` | Host port for the web UI and API |
| `PARSEABLE_USERNAME` | `admin` | Admin username for the dashboard |
| `PARSEABLE_PASSWORD` | `changeme` | Admin password — **change for production** |
[Parseable](https://github.com/parseablehq/parseable) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Parseable in a containerized environment with persistent storage, health checks, and environment-based configuration.
## Architecture
- **parseable**: Single-binary log engine — ingests logs, indexes them in real time, stores data on S3-compatible or local storage, and serves the query API and dashboard.
### Services
## Features
| Service | Image | Purpose |
|---------|-------|---------|
| `parseable` | `parseable/parseable:latest` | Main application service |
- **S3-backed storage**: Store logs in MinIO, AWS S3, or any S3-compatible backend
- **OpenTelemetry native**: Ingest OTLP logs directly without translation layers
- **SQL-like queries**: Search and filter logs with a familiar query syntax
- **Schema-on-read**: No rigid index templates — logs are structured at query time
- **Multi-tenancy**: Isolate log streams per team, service, or environment
### Volumes
## Health Check
| Volume | Mount | Purpose |
|--------|-------|---------|
| `parseable_data` | (varies) | Persistent data storage |
### Networks
Uses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.
## Quick Start
### 1. Configure environment
```bash
curl http://localhost:8000/api/v1/liveness
cp .env.example .env
# Edit .env with your configuration
```
Full documentation: [parseable.io/docs](https://www.parseable.io/docs/introduction)
### 2. Start the service
```bash
docker compose up -d
```
### 3. Verify it's running
```bash
docker compose ps
curl -s http://localhost:8000/ | head -c 200
```
### 4. Access the application
Open [http://localhost:8000](http://localhost:8000) in your browser.
## Configuration Reference
### Environment Variables
Set these in your `.env` file (copy from `.env.example`):
| Variable | Default | Description |
|----------|---------|-------------|
| `PARSEABLE_PORT` | `8000` | Host port for Parseable UI and API (default: 8000) |
| `PARSEABLE_USERNAME` | `admin` | Admin username |
| `PARSEABLE_PASSWORD` | `changeme` | Admin password (change this!) |
## Troubleshooting
### Container won't start
Check the logs for error messages:
```bash
docker compose logs
```
### Port conflict
If the default port 8000 is already in use, change it in `.env` and restart:
```bash
# Edit .env and change to an available port
docker compose down && docker compose up -d
```
### Health check shows unhealthy
The container may need more time to start on first run or low-resource hosts. Check the logs:
```bash
docker compose logs
```
If needed, increase `start_period` in `docker-compose.yml`.
### Permission errors
Ensure the Docker user has write access to the data volume:
```bash
docker compose exec parseable ls -la /data 2>/dev/null || echo "Volume directory not accessible"
```
## Backup & Recovery
### Backup
Stop the service to ensure data consistency, then back up the data volume:
```bash
docker compose down
docker run --rm -v parseable_data:/data -v $(pwd):/backup alpine \
tar czf /backup/parseable-backup-$(date +%Y%m%d).tar.gz -C /data .
docker compose up -d
```
### Recovery
```bash
docker compose down
docker run --rm -v parseable_data:/data -v $(pwd):/backup alpine \
tar xzf /backup/parseable-backup-YYYYMMDD.tar.gz -C /data
docker compose up -d
```
## Project Homepage
- **Project site:** [Parseable](https://github.com/parseablehq/parseable)
- **Docker Image:** `parseable/parseable:latest`
- **Issues:** [GitHub Issues](https://github.com/parseablehq/parseable/issues)
## Prerequisites
- Docker Engine 20.10+
- Docker Compose v2.0+
- 512MB+ RAM recommended
- 1GB+ free disk space for data storage
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "parseable",
"name": "Parseable",
"description": "Cloud-native log observability engine — store, search, and analyze logs at scale with an S3-compatible backend",
"description": "Observability platform for log analytics and event data at scale",
"version": "1.0.0",
"author": "Arcane",
"tags": [
+86 -57
View File
@@ -1,105 +1,134 @@
# Phpmyadmin
Self-hosted Phpmyadmin deployment via Docker
Web-based MySQL/MariaDB administration
This template provides a containerized deployment of [Phpmyadmin](phpmyadmin) using Docker Compose.
## Project Overview
## Quick Start
1. **Clone and configure:**
```bash
cp .env.example .env
# Edit .env with your configuration
```
2. **Start the service:**
```bash
docker compose up -d
```
3. **Verify it's running:**
```bash
docker compose ps
curl -s http://localhost:8080/ | head -c 200
```
4. **Access the application:**
Open [http://localhost:8080](http://localhost:8080) in your browser.
[Phpmyadmin](https://github.com/phpmyadmin/phpmyadmin) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Phpmyadmin in a containerized environment with persistent storage, health checks, and environment-based configuration.
## Architecture
| Component | Image | Purpose |
|-----------|-------|---------|
| `phpmyadmin` | docker.io/library/phpmyadmin:latest | Main application service |
| `phpmyadmin_data` | (volume) | Persistent data storage |
### Services
Services communicate over a shared Docker network. Data is persisted in named volumes.
| Service | Image | Purpose |
|---------|-------|---------|
| `phpmyadmin` | `docker.io/library/phpmyadmin:latest` | Main application service |
## Configuration
### Volumes
## Configuration
| Volume | Mount | Purpose |
|--------|-------|---------|
| `phpmyadmin_data` | (varies) | Persistent data storage |
Environment variables (set in `.env`):
### Health Check
The container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.
### Networks
Uses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.
## Quick Start
### 1. Configure environment
```bash
cp .env.example .env
# Edit .env with your configuration
```
### 2. Start the service
```bash
docker compose up -d
```
### 3. Verify it's running
```bash
docker compose ps
curl -s http://localhost:8080/ | head -c 200
```
### 4. Access the application
Open [http://localhost:8080](http://localhost:8080) in your browser.
## Configuration Reference
### Environment Variables
Set these in your `.env` file (copy from `.env.example`):
| Variable | Default | Description |
|----------|---------|-------------|
| `PHPMYADMIN_PORT` | `8080` | Configuration variable |
| `PHPMYADMIN_PORT` | `8080` | phpmyadmin host port (default: 8080) |
## Troubleshooting
**Container won't start:**
### Container won't start
Check the logs for error messages:
```bash
docker compose logs phpmyadmin
docker compose logs
```
**Port conflict:**
Edit `.env` and change `PHPMYADMIN_PORT` to an available port, then restart:
### Port conflict
If the default port 8080 is already in use, change it in `.env` and restart:
```bash
# Edit .env and change to an available port
docker compose down && docker compose up -d
```
**Permission errors:**
Ensure the Docker user has write access to the data volume:
### Health check shows unhealthy
The container may need more time to start on first run or low-resource hosts. Check the logs:
```bash
docker compose exec phpmyadmin ls -la /data
docker compose logs
```
**Health check failing:**
If needed, increase `start_period` in `docker-compose.yml`.
### Permission errors
Ensure the Docker user has write access to the data volume:
```bash
docker compose ps # Check STATUS column
docker inspect phpmyadmin --format='{{json .State.Health}}'
docker compose exec phpmyadmin ls -la /data 2>/dev/null || echo "Volume directory not accessible"
```
## Backup & Recovery
**Backup:**
### Backup
Stop the service to ensure data consistency, then back up the data volume:
```bash
# Stop the service
docker compose down
# Backup the data volume
docker run --rm -v phpmyadmin_data:/data -v $(pwd):/backup alpine tar czf /backup/phpmyadmin-backup-$(date +%Y%m%d).tar.gz /data
# Restart
docker run --rm -v phpmyadmin_data:/data -v $(pwd):/backup alpine \
tar czf /backup/phpmyadmin-backup-$(date +%Y%m%d).tar.gz -C /data .
docker compose up -d
```
**Restore:**
### Recovery
```bash
docker compose down
docker run --rm -v phpmyadmin_data:/data -v $(pwd):/backup alpine sh -c "rm -rf /data/* && tar xzf /backup/phpmyadmin-backup.tar.gz -C /"
docker run --rm -v phpmyadmin_data:/data -v $(pwd):/backup alpine \
tar xzf /backup/phpmyadmin-backup-YYYYMMDD.tar.gz -C /data
docker compose up -d
```
## Links
## Project Homepage
- **Project site:** [Phpmyadmin](https://github.com/phpmyadmin/phpmyadmin)
- **Docker Image:** `docker.io/library/phpmyadmin:latest`
- **Issues:** [GitHub Issues](https://github.com/phpmyadmin/phpmyadmin/issues)
## Prerequisites
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "phpmyadmin",
"name": "Phpmyadmin",
"description": "Self-hosted Phpmyadmin deployment via Docker",
"description": "Popular web-based MySQL and MariaDB database administration tool",
"version": "1.0.0",
"author": "Arcane",
"tags": [
+86 -57
View File
@@ -1,105 +1,134 @@
# Prometheus
Self-hosted Prometheus deployment via Docker
Open-source monitoring and alerting
This template provides a containerized deployment of [Prometheus](prometheus) using Docker Compose.
## Project Overview
## Quick Start
1. **Clone and configure:**
```bash
cp .env.example .env
# Edit .env with your configuration
```
2. **Start the service:**
```bash
docker compose up -d
```
3. **Verify it's running:**
```bash
docker compose ps
curl -s http://localhost:9090/ | head -c 200
```
4. **Access the application:**
Open [http://localhost:9090](http://localhost:9090) in your browser.
[Prometheus](https://github.com/prometheus/prometheus) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Prometheus in a containerized environment with persistent storage, health checks, and environment-based configuration.
## Architecture
| Component | Image | Purpose |
|-----------|-------|---------|
| `prometheus` | docker.io/prom/prometheus:latest | Main application service |
| `prometheus_data` | (volume) | Persistent data storage |
### Services
Services communicate over a shared Docker network. Data is persisted in named volumes.
| Service | Image | Purpose |
|---------|-------|---------|
| `prometheus` | `docker.io/prom/prometheus:latest` | Main application service |
## Configuration
### Volumes
## Configuration
| Volume | Mount | Purpose |
|--------|-------|---------|
| `prometheus_data` | (varies) | Persistent data storage |
Environment variables (set in `.env`):
### Health Check
The container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.
### Networks
Uses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.
## Quick Start
### 1. Configure environment
```bash
cp .env.example .env
# Edit .env with your configuration
```
### 2. Start the service
```bash
docker compose up -d
```
### 3. Verify it's running
```bash
docker compose ps
curl -s http://localhost:9090/ | head -c 200
```
### 4. Access the application
Open [http://localhost:9090](http://localhost:9090) in your browser.
## Configuration Reference
### Environment Variables
Set these in your `.env` file (copy from `.env.example`):
| Variable | Default | Description |
|----------|---------|-------------|
| `PROMETHEUS_PORT` | `9090` | Configuration variable |
| `PROMETHEUS_PORT` | `9090` | prometheus host port (default: 9090) |
## Troubleshooting
**Container won't start:**
### Container won't start
Check the logs for error messages:
```bash
docker compose logs prometheus
docker compose logs
```
**Port conflict:**
Edit `.env` and change `PROMETHEUS_PORT` to an available port, then restart:
### Port conflict
If the default port 9090 is already in use, change it in `.env` and restart:
```bash
# Edit .env and change to an available port
docker compose down && docker compose up -d
```
**Permission errors:**
Ensure the Docker user has write access to the data volume:
### Health check shows unhealthy
The container may need more time to start on first run or low-resource hosts. Check the logs:
```bash
docker compose exec prometheus ls -la /data
docker compose logs
```
**Health check failing:**
If needed, increase `start_period` in `docker-compose.yml`.
### Permission errors
Ensure the Docker user has write access to the data volume:
```bash
docker compose ps # Check STATUS column
docker inspect prometheus --format='{{json .State.Health}}'
docker compose exec prometheus ls -la /data 2>/dev/null || echo "Volume directory not accessible"
```
## Backup & Recovery
**Backup:**
### Backup
Stop the service to ensure data consistency, then back up the data volume:
```bash
# Stop the service
docker compose down
# Backup the data volume
docker run --rm -v prometheus_data:/data -v $(pwd):/backup alpine tar czf /backup/prometheus-backup-$(date +%Y%m%d).tar.gz /data
# Restart
docker run --rm -v prometheus_data:/data -v $(pwd):/backup alpine \
tar czf /backup/prometheus-backup-$(date +%Y%m%d).tar.gz -C /data .
docker compose up -d
```
**Restore:**
### Recovery
```bash
docker compose down
docker run --rm -v prometheus_data:/data -v $(pwd):/backup alpine sh -c "rm -rf /data/* && tar xzf /backup/prometheus-backup.tar.gz -C /"
docker run --rm -v prometheus_data:/data -v $(pwd):/backup alpine \
tar xzf /backup/prometheus-backup-YYYYMMDD.tar.gz -C /data
docker compose up -d
```
## Links
## Project Homepage
- **Project site:** [Prometheus](https://github.com/prometheus/prometheus)
- **Docker Image:** `docker.io/prom/prometheus:latest`
- **Issues:** [GitHub Issues](https://github.com/prometheus/prometheus/issues)
## Prerequisites
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "prometheus",
"name": "Prometheus",
"description": "Self-hosted Prometheus deployment via Docker",
"description": "Open-source systems monitoring and alerting toolkit with a dimensional data model",
"version": "1.0.0",
"author": "Arcane",
"tags": [
+86 -57
View File
@@ -1,105 +1,134 @@
# Rabbitmq
Self-hosted Rabbitmq deployment via Docker
Open-source message broker
This template provides a containerized deployment of [Rabbitmq](rabbitmq) using Docker Compose.
## Project Overview
## Quick Start
1. **Clone and configure:**
```bash
cp .env.example .env
# Edit .env with your configuration
```
2. **Start the service:**
```bash
docker compose up -d
```
3. **Verify it's running:**
```bash
docker compose ps
curl -s http://localhost:8080/ | head -c 200
```
4. **Access the application:**
Open [http://localhost:8080](http://localhost:8080) in your browser.
[Rabbitmq](https://github.com/rabbitmq/rabbitmq-server) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Rabbitmq in a containerized environment with persistent storage, health checks, and environment-based configuration.
## Architecture
| Component | Image | Purpose |
|-----------|-------|---------|
| `rabbitmq` | docker.io/bitnamicharts/rabbitmq:latest | Main application service |
| `rabbitmq_data` | (volume) | Persistent data storage |
### Services
Services communicate over a shared Docker network. Data is persisted in named volumes.
| Service | Image | Purpose |
|---------|-------|---------|
| `rabbitmq` | `docker.io/bitnamicharts/rabbitmq:latest` | Main application service |
## Configuration
### Volumes
## Configuration
| Volume | Mount | Purpose |
|--------|-------|---------|
| `rabbitmq_data` | (varies) | Persistent data storage |
Environment variables (set in `.env`):
### Health Check
The container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.
### Networks
Uses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.
## Quick Start
### 1. Configure environment
```bash
cp .env.example .env
# Edit .env with your configuration
```
### 2. Start the service
```bash
docker compose up -d
```
### 3. Verify it's running
```bash
docker compose ps
curl -s http://localhost:8080/ | head -c 200
```
### 4. Access the application
Open [http://localhost:8080](http://localhost:8080) in your browser.
## Configuration Reference
### Environment Variables
Set these in your `.env` file (copy from `.env.example`):
| Variable | Default | Description |
|----------|---------|-------------|
| `RABBITMQ_PORT` | `8080` | Configuration variable |
| `RABBITMQ_PORT` | `8080` | RabbitMQ host port (default: 8080) |
## Troubleshooting
**Container won't start:**
### Container won't start
Check the logs for error messages:
```bash
docker compose logs rabbitmq
docker compose logs
```
**Port conflict:**
Edit `.env` and change `RABBITMQ_PORT` to an available port, then restart:
### Port conflict
If the default port 8080 is already in use, change it in `.env` and restart:
```bash
# Edit .env and change to an available port
docker compose down && docker compose up -d
```
**Permission errors:**
Ensure the Docker user has write access to the data volume:
### Health check shows unhealthy
The container may need more time to start on first run or low-resource hosts. Check the logs:
```bash
docker compose exec rabbitmq ls -la /data
docker compose logs
```
**Health check failing:**
If needed, increase `start_period` in `docker-compose.yml`.
### Permission errors
Ensure the Docker user has write access to the data volume:
```bash
docker compose ps # Check STATUS column
docker inspect rabbitmq --format='{{json .State.Health}}'
docker compose exec rabbitmq ls -la /data 2>/dev/null || echo "Volume directory not accessible"
```
## Backup & Recovery
**Backup:**
### Backup
Stop the service to ensure data consistency, then back up the data volume:
```bash
# Stop the service
docker compose down
# Backup the data volume
docker run --rm -v rabbitmq_data:/data -v $(pwd):/backup alpine tar czf /backup/rabbitmq-backup-$(date +%Y%m%d).tar.gz /data
# Restart
docker run --rm -v rabbitmq_data:/data -v $(pwd):/backup alpine \
tar czf /backup/rabbitmq-backup-$(date +%Y%m%d).tar.gz -C /data .
docker compose up -d
```
**Restore:**
### Recovery
```bash
docker compose down
docker run --rm -v rabbitmq_data:/data -v $(pwd):/backup alpine sh -c "rm -rf /data/* && tar xzf /backup/rabbitmq-backup.tar.gz -C /"
docker run --rm -v rabbitmq_data:/data -v $(pwd):/backup alpine \
tar xzf /backup/rabbitmq-backup-YYYYMMDD.tar.gz -C /data
docker compose up -d
```
## Links
## Project Homepage
- **Project site:** [Rabbitmq](https://github.com/rabbitmq/rabbitmq-server)
- **Docker Image:** `docker.io/bitnamicharts/rabbitmq:latest`
- **Issues:** [GitHub Issues](https://github.com/rabbitmq/rabbitmq-server/issues)
## Prerequisites
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "rabbitmq",
"name": "Rabbitmq",
"description": "Self-hosted Rabbitmq deployment via Docker",
"description": "Open-source message broker supporting multiple messaging protocols",
"version": "1.0.0",
"author": "Arcane",
"tags": [
+2 -1
View File
@@ -5,6 +5,7 @@
"version": "1.0.0",
"author": "Arcane",
"tags": [
"ai"
"ai",
"tools"
]
}
+86 -57
View File
@@ -1,105 +1,134 @@
# Redis
In-memory data store used as a database, cache, message broker, and streaming engine for high-performance applications
In-memory data store and cache
This template provides a containerized deployment of [Redis](redis) using Docker Compose.
## Project Overview
## Quick Start
1. **Clone and configure:**
```bash
cp .env.example .env
# Edit .env with your configuration
```
2. **Start the service:**
```bash
docker compose up -d
```
3. **Verify it's running:**
```bash
docker compose ps
curl -s http://localhost:8080/ | head -c 200
```
4. **Access the application:**
Open [http://localhost:8080](http://localhost:8080) in your browser.
[Redis](https://github.com/redis/redis) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Redis in a containerized environment with persistent storage, health checks, and environment-based configuration.
## Architecture
| Component | Image | Purpose |
|-----------|-------|---------|
| `redis` | docker.io/redislabs/redis:latest | Main application service |
| `redis_data` | (volume) | Persistent data storage |
### Services
Services communicate over a shared Docker network. Data is persisted in named volumes.
| Service | Image | Purpose |
|---------|-------|---------|
| `redis` | `docker.io/redislabs/redis:latest` | Caching layer |
## Configuration
### Volumes
## Configuration
| Volume | Mount | Purpose |
|--------|-------|---------|
| `redis_data` | (varies) | Persistent data storage |
Environment variables (set in `.env`):
### Health Check
The container runs a health check every 30s (3 retries, 10s start period). Docker will report the container as unhealthy if the endpoint fails consistently.
### Networks
Uses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.
## Quick Start
### 1. Configure environment
```bash
cp .env.example .env
# Edit .env with your configuration
```
### 2. Start the service
```bash
docker compose up -d
```
### 3. Verify it's running
```bash
docker compose ps
curl -s http://localhost:8080/ | head -c 200
```
### 4. Access the application
Open [http://localhost:8080](http://localhost:8080) in your browser.
## Configuration Reference
### Environment Variables
Set these in your `.env` file (copy from `.env.example`):
| Variable | Default | Description |
|----------|---------|-------------|
| `REDIS_PORT` | `8080` | Configuration variable |
| `REDIS_PORT` | `8080` | Redis host port (default: 8080) |
## Troubleshooting
**Container won't start:**
### Container won't start
Check the logs for error messages:
```bash
docker compose logs redis
docker compose logs
```
**Port conflict:**
Edit `.env` and change `REDIS_PORT` to an available port, then restart:
### Port conflict
If the default port 8080 is already in use, change it in `.env` and restart:
```bash
# Edit .env and change to an available port
docker compose down && docker compose up -d
```
**Permission errors:**
Ensure the Docker user has write access to the data volume:
### Health check shows unhealthy
The container may need more time to start on first run or low-resource hosts. Check the logs:
```bash
docker compose exec redis ls -la /data
docker compose logs
```
**Health check failing:**
If needed, increase `start_period` in `docker-compose.yml`.
### Permission errors
Ensure the Docker user has write access to the data volume:
```bash
docker compose ps # Check STATUS column
docker inspect redis --format='{{json .State.Health}}'
docker compose exec redis ls -la /data 2>/dev/null || echo "Volume directory not accessible"
```
## Backup & Recovery
**Backup:**
### Backup
Stop the service to ensure data consistency, then back up the data volume:
```bash
# Stop the service
docker compose down
# Backup the data volume
docker run --rm -v redis_data:/data -v $(pwd):/backup alpine tar czf /backup/redis-backup-$(date +%Y%m%d).tar.gz /data
# Restart
docker run --rm -v redis_data:/data -v $(pwd):/backup alpine \
tar czf /backup/redis-backup-$(date +%Y%m%d).tar.gz -C /data .
docker compose up -d
```
**Restore:**
### Recovery
```bash
docker compose down
docker run --rm -v redis_data:/data -v $(pwd):/backup alpine sh -c "rm -rf /data/* && tar xzf /backup/redis-backup.tar.gz -C /"
docker run --rm -v redis_data:/data -v $(pwd):/backup alpine \
tar xzf /backup/redis-backup-YYYYMMDD.tar.gz -C /data
docker compose up -d
```
## Links
## Project Homepage
- **Project site:** [Redis](https://github.com/redis/redis)
- **Docker Image:** `docker.io/redislabs/redis:latest`
- **Issues:** [GitHub Issues](https://github.com/redis/redis/issues)
## Prerequisites
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "redis",
"name": "Redis",
"description": "In-memory data store used as a database, cache, message broker, and streaming engine for high-performance applications",
"description": "In-memory data structure store — database, cache, and message broker",
"version": "1.0.0",
"author": "Arcane",
"tags": [
+9 -9
View File
@@ -8,26 +8,26 @@ ROWBOAT_PORT=8080
OPENAI_API_KEY=
# Optional: use a different provider
# PROVIDER_API_KEY=
# PROVIDER_BASE_URL=
# PROVIDER_DEFAULT_MODEL=gpt-4o
# PROVIDER_COPILOT_MODEL=gpt-4o-mini
PROVIDER_API_KEY=
PROVIDER_BASE_URL=
PROVIDER_DEFAULT_MODEL=gpt-4o
PROVIDER_COPILOT_MODEL=gpt-4o-mini
# MongoDB credentials (core)
MONGO_USER=rowboat
MONGO_PASSWORD=rowboat
# Qdrant vector database (optional — for RAG)
# USE_RAG=true
# QDRANT_API_KEY=
USE_RAG=false
QDRANT_API_KEY=
# Composio tools integration (optional)
# USE_COMPOSIO_TOOLS=true
# COMPOSIO_API_KEY=
USE_COMPOSIO_TOOLS=false
COMPOSIO_API_KEY=
# Internal service keys (change these)
AGENTS_API_KEY=change-me
COPILOT_API_KEY=change-me
# Auth (optional — disabled by default, uses test values)
# USE_AUTH=true
USE_AUTH=false
+3 -1
View File
@@ -5,6 +5,8 @@
"version": "1.0.0",
"author": "Arcane",
"tags": [
"storage"
"storage",
"tools",
"security"
]
}
+3 -1
View File
@@ -5,6 +5,8 @@
"version": "1.0.0",
"author": "Arcane",
"tags": [
"ai"
"ai",
"e-commerce",
"automation"
]
}
+3 -1
View File
@@ -5,6 +5,8 @@
"version": "1.0.0",
"author": "Arcane",
"tags": [
"ai"
"ai",
"tools",
"automation"
]
}
+1 -1
View File
@@ -33,4 +33,4 @@ STUDIO_PORT=8082
# ── Optional ───────────────────────────────────────────────────────────
# Logflare API key (for logs in Studio dashboard)
# LOGFLARE_API_KEY=api-key
LOGFLARE_API_KEY=api-key
+86 -57
View File
@@ -1,105 +1,134 @@
# Teamspeak
Self-hosted Teamspeak deployment via Docker
Voice communication platform
This template provides a containerized deployment of [Teamspeak](teamspeak) using Docker Compose.
## Project Overview
## Quick Start
1. **Clone and configure:**
```bash
cp .env.example .env
# Edit .env with your configuration
```
2. **Start the service:**
```bash
docker compose up -d
```
3. **Verify it's running:**
```bash
docker compose ps
curl -s http://localhost:8080/ | head -c 200
```
4. **Access the application:**
Open [http://localhost:8080](http://localhost:8080) in your browser.
[Teamspeak](https://github.com/TeamSpeak/TeamSpeak-3-server) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Teamspeak in a containerized environment with persistent storage, health checks, and environment-based configuration.
## Architecture
| Component | Image | Purpose |
|-----------|-------|---------|
| `teamspeak` | docker.io/library/teamspeak:latest | Main application service |
| `teamspeak_data` | (volume) | Persistent data storage |
### Services
Services communicate over a shared Docker network. Data is persisted in named volumes.
| Service | Image | Purpose |
|---------|-------|---------|
| `teamspeak` | `docker.io/library/teamspeak:latest` | Main application service |
## Configuration
### Volumes
## Configuration
| Volume | Mount | Purpose |
|--------|-------|---------|
| `teamspeak_data` | (varies) | Persistent data storage |
Environment variables (set in `.env`):
### Health Check
The container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.
### Networks
Uses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.
## Quick Start
### 1. Configure environment
```bash
cp .env.example .env
# Edit .env with your configuration
```
### 2. Start the service
```bash
docker compose up -d
```
### 3. Verify it's running
```bash
docker compose ps
curl -s http://localhost:8080/ | head -c 200
```
### 4. Access the application
Open [http://localhost:8080](http://localhost:8080) in your browser.
## Configuration Reference
### Environment Variables
Set these in your `.env` file (copy from `.env.example`):
| Variable | Default | Description |
|----------|---------|-------------|
| `TEAMSPEAK_PORT` | `8080` | Configuration variable |
| `TEAMSPEAK_PORT` | `8080` | teamspeak host port (default: 8080) |
## Troubleshooting
**Container won't start:**
### Container won't start
Check the logs for error messages:
```bash
docker compose logs teamspeak
docker compose logs
```
**Port conflict:**
Edit `.env` and change `TEAMSPEAK_PORT` to an available port, then restart:
### Port conflict
If the default port 8080 is already in use, change it in `.env` and restart:
```bash
# Edit .env and change to an available port
docker compose down && docker compose up -d
```
**Permission errors:**
Ensure the Docker user has write access to the data volume:
### Health check shows unhealthy
The container may need more time to start on first run or low-resource hosts. Check the logs:
```bash
docker compose exec teamspeak ls -la /data
docker compose logs
```
**Health check failing:**
If needed, increase `start_period` in `docker-compose.yml`.
### Permission errors
Ensure the Docker user has write access to the data volume:
```bash
docker compose ps # Check STATUS column
docker inspect teamspeak --format='{{json .State.Health}}'
docker compose exec teamspeak ls -la /data 2>/dev/null || echo "Volume directory not accessible"
```
## Backup & Recovery
**Backup:**
### Backup
Stop the service to ensure data consistency, then back up the data volume:
```bash
# Stop the service
docker compose down
# Backup the data volume
docker run --rm -v teamspeak_data:/data -v $(pwd):/backup alpine tar czf /backup/teamspeak-backup-$(date +%Y%m%d).tar.gz /data
# Restart
docker run --rm -v teamspeak_data:/data -v $(pwd):/backup alpine \
tar czf /backup/teamspeak-backup-$(date +%Y%m%d).tar.gz -C /data .
docker compose up -d
```
**Restore:**
### Recovery
```bash
docker compose down
docker run --rm -v teamspeak_data:/data -v $(pwd):/backup alpine sh -c "rm -rf /data/* && tar xzf /backup/teamspeak-backup.tar.gz -C /"
docker run --rm -v teamspeak_data:/data -v $(pwd):/backup alpine \
tar xzf /backup/teamspeak-backup-YYYYMMDD.tar.gz -C /data
docker compose up -d
```
## Links
## Project Homepage
- **Project site:** [Teamspeak](https://github.com/TeamSpeak/TeamSpeak-3-server)
- **Docker Image:** `docker.io/library/teamspeak:latest`
- **Issues:** [GitHub Issues](https://github.com/TeamSpeak/TeamSpeak-3-server/issues)
## Prerequisites
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "teamspeak",
"name": "Teamspeak",
"description": "Self-hosted Teamspeak deployment via Docker",
"description": "Voice communication platform for gamers and communities",
"version": "1.0.0",
"author": "Arcane",
"tags": [
+1 -1
View File
@@ -28,7 +28,7 @@ OLLAMA_BASE_URL=http://host.docker.internal:11434
# ── Gateway Config ────────────────────────────────────────────────
# Path to the TensorZero gateway configuration file (default: /app/config/tensorzero.toml)
# TENSORZERO_CONFIG_FILE=/app/config/tensorzero.toml
TENSORZERO_CONFIG_FILE=/app/config/tensorzero.toml
# ── Observability (Optional) ──────────────────────────────────────
# ClickHouse URL for storing inference logs and metrics.
+119 -93
View File
@@ -1,111 +1,137 @@
# TensorZero — AI Inference Gateway
# TensorZero
[TensorZero](https://www.tensorzero.com/) is an open-source inference gateway that provides a unified API for multiple LLM providers (OpenAI, Anthropic, Google, AWS Bedrock, Ollama) with built-in fallbacks, load balancing, caching, and observability.
AI agent evaluation and monitoring
## Project Overview
[TensorZero](https://github.com/tensorzero/tensorzero) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run TensorZero in a containerized environment with persistent storage, health checks, and environment-based configuration.
## Architecture
### Services
| Service | Image | Purpose |
|---------|-------|---------|
| `tensorzero` | `tensorzero/gateway:latest` | Main application service |
### Networks
Uses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.
## Quick Start
1. **Create your config file:** TensorZero requires a `config/tensorzero.toml` to define your model gateways and functions. See [TensorZero's configuration guide](https://www.tensorzero.com/docs/reference/tensorzero.toml).
2. **Copy and edit the environment file:**
```bash
cp .env.example .env
# Add at least one API key
```
3. **Start the gateway:**
```bash
docker compose up -d
```
4. **Verify it's running:**
```bash
curl http://localhost:3000/health
```
Expected response: `{"status":"ok"}`
5. **Route an inference:**
```bash
curl -X POST http://localhost:3000/inference \
-H "Content-Type: application/json" \
-d '{
"function_name": "basic_chat",
"input": {
"messages": [
{"role": "user", "content": "Hello, world!"}
]
}
}'
```
## Configuration
Copy `.env.example` to `.env` and edit:
| Variable | Default | Description |
|------------------------------|------------------------------------|-------------------------------------------------|
| `TENSORZERO_PORT` | `3000` | Host port for the gateway HTTP API |
| `OPENAI_API_KEY` | — | OpenAI API key (optional) |
| `ANTHROPIC_API_KEY` | — | Anthropic API key (optional) |
| `GOOGLE_API_KEY` | — | Google / Gemini API key (optional) |
| `AWS_ACCESS_KEY_ID` | — | AWS access key for Bedrock (optional) |
| `AWS_SECRET_ACCESS_KEY` | — | AWS secret key for Bedrock (optional) |
| `AWS_DEFAULT_REGION` | `us-east-1` | AWS region for Bedrock |
| `OLLAMA_BASE_URL` | `http://host.docker.internal:11434`| Local Ollama endpoint |
| `TENSORZERO_CLICKHOUSE_URL` | — | ClickHouse URL for inference observability |
### Configuration File
TensorZero reads `/app/config/tensorzero.toml` from the mounted `./config` directory. Create this file to define your model gateways, functions, and provider routing. Example:
```toml
[gateways.default]
type = "openai"
model_name = "gpt-4o"
```
## API Endpoints
| Endpoint | Method | Description |
|----------------|--------|---------------------------------------------------|
| `/health` | GET | Readiness check |
| `/inference` | POST | Route an inference request |
| `/openai/*` | POST | OpenAI-compatible chat completions endpoint |
## Health Check
### 1. Configure environment
```bash
curl http://localhost:3000/health
cp .env.example .env
# Edit .env with your configuration
```
Expected response:
```json
{"status":"ok"}
```
## Managing TensorZero
**View logs:**
### 2. Start the service
```bash
docker compose logs -f tensorzero
docker compose up -d
```
**Stop the gateway:**
### 3. Verify it's running
```bash
docker compose down
docker compose ps
curl -s http://localhost:3000/ | head -c 200
```
### 4. Access the application
Open [http://localhost:3000](http://localhost:3000) in your browser.
## Configuration Reference
### Environment Variables
Set these in your `.env` file (copy from `.env.example`):
| Variable | Default | Description |
|----------|---------|-------------|
| `TENSORZERO_PORT` | `3000` | Host port to expose the TensorZero gateway on (default: 3000) |
| `OPENAI_API_KEY` | `—` | OpenAI |
| `ANTHROPIC_API_KEY` | `—` | Anthropic |
| `GOOGLE_API_KEY` | `—` | Google / Gemini |
| `AWS_ACCESS_KEY_ID` | `—` | AWS Bedrock |
| `AWS_SECRET_ACCESS_KEY` | `—` | AWS_SECRET_ACCESS_KEY configuration value |
| `AWS_DEFAULT_REGION` | `us-east-1` | AWS_DEFAULT_REGION configuration value |
| `OLLAMA_BASE_URL` | `http://host.docker.internal:11434` | For Ollama running on the host machine (or at a custom URL) |
| `TENSORZERO_CONFIG_FILE` | `/app/config/tensorzero.toml` | Path to the TensorZero gateway configuration file (default: /app/config/tensorzero.toml) |
| `TENSORZERO_CLICKHOUSE_URL` | `—` | If empty, TensorZero logs to stdout only. |
## Troubleshooting
| Symptom | Likely Cause | Fix |
|-------------------------------------------------|------------------------------------|--------------------------------------------------------|
| `401 Unauthorized` | No API key configured | Set at least one provider API key in `.env` |
| `Connection refused` on port 3000 | Container still starting | Wait a few seconds and retry |
| Model not found | Missing config entry | Add the model to `config/tensorzero.toml` |
| Ollama connection error | Ollama not running locally | Start Ollama or update `OLLAMA_BASE_URL` |
### Container won't start
Check the logs for error messages:
```bash
docker compose logs
```
### Port conflict
If the default port 3000 is already in use, change it in `.env` and restart:
```bash
# Edit .env and change to an available port
docker compose down && docker compose up -d
```
### Health check shows unhealthy
The container may need more time to start on first run or low-resource hosts. Check the logs:
```bash
docker compose logs
```
If needed, increase `start_period` in `docker-compose.yml`.
### Permission errors
Ensure the Docker user has write access to the data volume:
```bash
docker compose exec tensorzero ls -la /data 2>/dev/null || echo "Volume directory not accessible"
```
## Backup & Recovery
### Backup
Stop the service to ensure data consistency, then back up the data volume:
```bash
docker compose down
docker run --rm -v tensorzero_data:/data -v $(pwd):/backup alpine \
tar czf /backup/tensorzero-backup-$(date +%Y%m%d).tar.gz -C /data .
docker compose up -d
```
### Recovery
```bash
docker compose down
docker run --rm -v tensorzero_data:/data -v $(pwd):/backup alpine \
tar xzf /backup/tensorzero-backup-YYYYMMDD.tar.gz -C /data
docker compose up -d
```
## Project Homepage
- **Project site:** [TensorZero](https://github.com/tensorzero/tensorzero)
- **Docker Image:** `tensorzero/gateway:latest`
- **Issues:** [GitHub Issues](https://github.com/tensorzero/tensorzero/issues)
## Prerequisites
- Docker Engine 20.10+
- Docker Compose v2.0+
- 512MB+ RAM recommended
- 1GB+ free disk space for data storage
+8 -2
View File
@@ -1,8 +1,14 @@
{
"id": "tensorzero",
"name": "TensorZero",
"description": "Open-source AI inference gateway — unified API for OpenAI, Anthropic, AWS Bedrock, Ollama, and more with fallbacks, load balancing, and observability",
"description": "Open platform for AI agent evaluation, testing, and monitoring",
"version": "1.0.0",
"author": "Arcane",
"tags": ["ai", "llm", "gateway", "inference", "observability"]
"tags": [
"ai",
"llm",
"gateway",
"inference",
"observability"
]
}
+81 -57
View File
@@ -1,105 +1,129 @@
# Test Application
A test template for verifying the build-registry script
Test scaffold for Arcane build tools
This template provides a containerized deployment of [Test Application](test application) using Docker Compose.
## Project Overview
## Quick Start
1. **Clone and configure:**
```bash
cp .env.example .env
# Edit .env with your configuration
```
2. **Start the service:**
```bash
docker compose up -d
```
3. **Verify it's running:**
```bash
docker compose ps
curl -s http://localhost:80/ | head -c 200
```
4. **Access the application:**
Open [http://localhost:80](http://localhost:80) in your browser.
[Test Application](https://github.com/arcane/arcane) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run Test Application in a containerized environment with persistent storage, health checks, and environment-based configuration.
## Architecture
| Component | Image | Purpose |
|-----------|-------|---------|
| `app` | nginx:latest | Main application service |
### Services
Services communicate over a shared Docker network. Data is persisted in named volumes.
| Service | Image | Purpose |
|---------|-------|---------|
| `app` | `nginx:latest` | Main application service |
## Configuration
### Health Check
## Configuration
The container runs a health check every 30s (3 retries, 30s start period). Docker will report the container as unhealthy if the endpoint fails consistently.
Environment variables (set in `.env`):
### Networks
Uses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.
## Quick Start
### 1. Configure environment
```bash
cp .env.example .env
# Edit .env with your configuration
```
### 2. Start the service
```bash
docker compose up -d
```
### 3. Verify it's running
```bash
docker compose ps
curl -s http://localhost:80/ | head -c 200
```
### 4. Access the application
Open [http://localhost:80](http://localhost:80) in your browser.
## Configuration Reference
### Environment Variables
Set these in your `.env` file (copy from `.env.example`):
| Variable | Default | Description |
|----------|---------|-------------|
| `PORT` | `80` | Configuration variable |
| `HOST` | `0.0.0.0` | Configuration variable |
| `PORT` | `80` | PORT configuration value |
| `HOST` | `0.0.0.0` | HOST configuration value |
## Troubleshooting
**Container won't start:**
### Container won't start
Check the logs for error messages:
```bash
docker compose logs app
docker compose logs
```
**Port conflict:**
Edit `.env` and change `TEST-APP_PORT` to an available port, then restart:
### Port conflict
If the default port 80 is already in use, change it in `.env` and restart:
```bash
# Edit .env and change to an available port
docker compose down && docker compose up -d
```
**Permission errors:**
Ensure the Docker user has write access to the data volume:
### Health check shows unhealthy
The container may need more time to start on first run or low-resource hosts. Check the logs:
```bash
docker compose exec app ls -la /data
docker compose logs
```
**Health check failing:**
If needed, increase `start_period` in `docker-compose.yml`.
### Permission errors
Ensure the Docker user has write access to the data volume:
```bash
docker compose ps # Check STATUS column
docker inspect test-app --format='{{json .State.Health}}'
docker compose exec app ls -la /data 2>/dev/null || echo "Volume directory not accessible"
```
## Backup & Recovery
**Backup:**
### Backup
Stop the service to ensure data consistency, then back up the data volume:
```bash
# Stop the service
docker compose down
# Backup the data volume
docker run --rm -v test-app_data:/data -v $(pwd):/backup alpine tar czf /backup/test-app-backup-$(date +%Y%m%d).tar.gz /data
# Restart
docker run --rm -v test-app_data:/data -v $(pwd):/backup alpine \
tar czf /backup/test-app-backup-$(date +%Y%m%d).tar.gz -C /data .
docker compose up -d
```
**Restore:**
### Recovery
```bash
docker compose down
docker run --rm -v test-app_data:/data -v $(pwd):/backup alpine sh -c "rm -rf /data/* && tar xzf /backup/test-app-backup.tar.gz -C /"
docker run --rm -v test-app_data:/data -v $(pwd):/backup alpine \
tar xzf /backup/test-app-backup-YYYYMMDD.tar.gz -C /data
docker compose up -d
```
## Links
## Project Homepage
- **Project site:** [Test Application](https://github.com/arcane/arcane)
- **Docker Image:** `nginx:latest`
- **Issues:** [GitHub Issues](https://github.com/arcane/arcane/issues)
## Prerequisites
+3 -2
View File
@@ -1,10 +1,11 @@
{
"id": "test-app",
"name": "Test Application",
"description": "A test template for verifying the build-registry script",
"description": "Test template for verifying the Arcane build-registry script",
"version": "1.0.0",
"author": "Test Author",
"tags": [
"reference"
"reference",
"tools"
]
}
+1 -1
View File
@@ -12,7 +12,7 @@ TPOT_WEB_PORT=64294
# ── Version ────────────────────────────────────────────────────────
# T-Pot CE Docker image version tag (default: latest)
# TPOTCE_VERSION=latest
TPOTCE_VERSION=latest
# ── Management Credentials ───────────────────────────────────────────
TPOT_WEB_USER=admin
+3 -1
View File
@@ -5,6 +5,8 @@
"version": "1.0.0",
"author": "Arcane",
"tags": [
"security"
"security",
"monitoring",
"infrastructure"
]
}
+3 -1
View File
@@ -5,6 +5,8 @@
"version": "1.0.0",
"author": "Arcane",
"tags": [
"ai"
"ai",
"analytics",
"monitoring"
]
}
+3 -1
View File
@@ -5,6 +5,8 @@
"version": "1.0.0",
"author": "Arcane",
"tags": [
"security"
"security",
"devops",
"tools"
]
}
+114 -132
View File
@@ -1,154 +1,136 @@
# TypeSense — Typo-Tolerant Search Engine
# TypeSense
[TypeSense](https://typesense.org) is an open-source, typo-tolerant search engine. It delivers instant (<50ms) search results with typo correction, faceted filtering, geosearch, vector search, and automatic ranking — all with a simple REST API. Think of it as an open-source alternative to Algolia with a fraction of the infrastructure cost.
Typo-tolerant search engine
## Project Overview
[TypeSense](https://github.com/typesense/typesense) is a self-hosted deployment packaged as a Docker Compose template. This template provides everything needed to run TypeSense in a containerized environment with persistent storage, health checks, and environment-based configuration.
## Architecture
### Services
| Service | Image | Purpose |
|---------|-------|---------|
| `typesense` | `typesense/typesense:latest` | Main application service |
### Volumes
| Volume | Mount | Purpose |
|--------|-------|---------|
| `typesense_data` | (varies) | Persistent data storage |
### Networks
Uses the default Docker bridge network. If you need to connect to other services (databases, APIs, reverse proxy), attach it to a shared Docker network.
## Quick Start
1. **Set your API key and start the server:**
```bash
cp .env.example .env
# Edit .env — set TYPESENSE_API_KEY to a strong random string
docker compose up -d
```
2. **Verify the server is running:**
```bash
curl -X GET http://localhost:8108/health \
-H "X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY:-your-api-key}"
```
Expected response: `{"ok": true}`
3. **Create a collection (index):**
```bash
curl -X POST http://localhost:8108/collections \
-H "Content-Type: application/json" \
-H "X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY:-your-api-key}" \
-d '{
"name": "books",
"fields": [
{"name": "title", "type": "string"},
{"name": "author", "type": "string"},
{"name": "year", "type": "int32"},
{"name": "rating", "type": "float"}
],
"default_sorting_field": "year"
}'
```
4. **Index some documents:**
```bash
curl -X POST http://localhost:8108/collections/books/documents \
-H "Content-Type: application/json" \
-H "X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY:-your-api-key}" \
-d '{
"title": "The Great Gatsby",
"author": "F. Scott Fitzgerald",
"year": 1925,
"rating": 4.5
}'
```
5. **Search with typo tolerance:**
```bash
curl "http://localhost:8108/collections/books/documents/search?q=gatsby&query_by=title&per_page=5" \
-H "X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY:-your-api-key}"
```
Try a deliberate typo — `gastsby` — and TypeSense will still find "The Great Gatsby".
## Configuration
Copy `.env.example` to `.env` and edit:
### Mandatory Variables
| Variable | Description |
|----------------------|-----------------------------------------------------------------------------|
| `TYPESENSE_API_KEY` | API key authenticating all requests. Generate with `openssl rand -hex 32`. |
### Optional Variables
| Variable | Default | Description |
|------------------------|---------|----------------------------------------------|
| `TYPESENSE_PORT` | `8108` | Host port for the TypeSense API |
| `TYPESENSE_ENABLE_CORS`| `true` | Allow browser-based requests |
## API Endpoints
TypeSense exposes a REST API on port 8108:
| Endpoint | Method | Description |
|---------------------------------------------|--------|--------------------------------------|
| `/health` | GET | Health check |
| `/collections` | GET | List all collections |
| `/collections` | POST | Create a collection |
| `/collections/:name` | GET | Retrieve a collection |
| `/collections/:name` | DELETE | Drop a collection |
| `/collections/:name/documents` | POST | Index a document |
| `/collections/:name/documents/search` | GET | Search documents |
| `/collections/:name/documents/:id` | GET | Retrieve a document |
| `/collections/:name/documents/:id` | DELETE | Delete a document |
| `/collections/:name/documents/export` | GET | Export all documents as JSON lines |
| `/collections/:name/documents/import` | POST | Bulk import documents (JSON lines) |
| `/multi_search` | POST | Search multiple collections at once |
Full API reference: [typesense.org/docs/latest/api](https://typesense.org/docs/latest/api/)
## Health Check
### 1. Configure environment
```bash
curl -X GET http://localhost:8108/health \
-H "X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY:-your-api-key}"
cp .env.example .env
# Edit .env with your configuration
```
A healthy server returns:
```json
{"ok": true}
```
## Managing TypeSense
**View logs:**
### 2. Start the service
```bash
docker compose logs -f typesense
docker compose up -d
```
**Bulk import from a JSONL file:**
### 3. Verify it's running
```bash
curl -X POST http://localhost:8108/collections/books/documents/import \
-H "Content-Type: text/plain" \
-H "X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY:-your-api-key}" \
--data-binary @books.jsonl
docker compose ps
curl -s http://localhost:8108/ | head -c 200
```
**Export all documents:**
### 4. Access the application
```bash
curl http://localhost:8108/collections/books/documents/export \
-H "X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY:-your-api-key}" > books-export.jsonl
```
Open [http://localhost:8108](http://localhost:8108) in your browser.
**Check collection statistics:**
## Configuration Reference
### Environment Variables
Set these in your `.env` file (copy from `.env.example`):
| Variable | Default | Description |
|----------|---------|-------------|
| `TYPESENSE_API_KEY` | `change-me-to-a-random-64-char-hex-string` | openssl rand -hex 32 |
| `TYPESENSE_PORT` | `8108` | Host port to expose the TypeSense API on (default: 8108) |
| `TYPESENSE_ENABLE_CORS` | `true` | Enable CORS headers for browser-based requests (default: true) |
```bash
curl http://localhost:8108/collections/books \
-H "X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY:-your-api-key}"
```
## Troubleshooting
| Symptom | Likely Cause | Fix |
|-------------------------------------------------------|-------------------------------------|-----------------------------------------------------|
| `401 Unauthorized` | Missing or incorrect API key | Verify `TYPESENSE_API_KEY` in `.env` matches the header value |
| `{"ok": false}` from health endpoint | Server not fully initialized | Wait a few seconds and retry |
| Search returns no results | Documents not indexed yet | Check document count: `GET /collections/:name` |
| Slow import performance | Importing one document at a time | Use the bulk import endpoint with JSON lines |
| `413 Request Entity Too Large` | Document exceeds size limit | Reduce document size or batch smaller chunks |
### Container won't start
Check the logs for error messages:
```bash
docker compose logs
```
### Port conflict
If the default port 8108 is already in use, change it in `.env` and restart:
```bash
# Edit .env and change to an available port
docker compose down && docker compose up -d
```
### Health check shows unhealthy
The container may need more time to start on first run or low-resource hosts. Check the logs:
```bash
docker compose logs
```
If needed, increase `start_period` in `docker-compose.yml`.
### Permission errors
Ensure the Docker user has write access to the data volume:
```bash
docker compose exec typesense ls -la /data 2>/dev/null || echo "Volume directory not accessible"
```
## Backup & Recovery
### Backup
Stop the service to ensure data consistency, then back up the data volume:
```bash
docker compose down
docker run --rm -v typesense_data:/data -v $(pwd):/backup alpine \
tar czf /backup/typesense-backup-$(date +%Y%m%d).tar.gz -C /data .
docker compose up -d
```
### Recovery
```bash
docker compose down
docker run --rm -v typesense_data:/data -v $(pwd):/backup alpine \
tar xzf /backup/typesense-backup-YYYYMMDD.tar.gz -C /data
docker compose up -d
```
## Project Homepage
- **Project site:** [TypeSense](https://github.com/typesense/typesense)
- **Docker Image:** `typesense/typesense:latest`
- **Issues:** [GitHub Issues](https://github.com/typesense/typesense/issues)
## Prerequisites
- Docker Engine 20.10+
- Docker Compose v2.0+
- 512MB+ RAM recommended
- 1GB+ free disk space for data storage

Some files were not shown because too many files have changed in this diff Show More