✈ Added plane, removed npm
This commit is contained in:
90
README.md
90
README.md
@@ -7,12 +7,22 @@ Docker Compose stacks for Flook (192.168.1.75) managed via Portainer.
|
|||||||
| Stack | Services | Port(s) | Description |
|
| Stack | Services | Port(s) | Description |
|
||||||
|-------|----------|---------|-------------|
|
|-------|----------|---------|-------------|
|
||||||
| portainer | portainer | 9000 | Stack management |
|
| portainer | portainer | 9000 | Stack management |
|
||||||
| proxy | npm | 1880, 18443, 81 | Nginx Proxy Manager (CRITICAL) |
|
|
||||||
| documents | paperless, paperless-db, paperless-redis, paperless-tika, paperless-gotenberg, onlyoffice | 8777, 8089, 4430 | Document management |
|
| documents | paperless, paperless-db, paperless-redis, paperless-tika, paperless-gotenberg, onlyoffice | 8777, 8089, 4430 | Document management |
|
||||||
| productivity | gitlab, vaultwarden, memos, mortis, freshrss | 8929, 4743, 5230, 5231, 8054 | Personal tools |
|
| productivity | gitlab, vaultwarden, memos, mortis, freshrss | 8929, 4743, 5230, 5231, 8054 | Personal tools |
|
||||||
| backup | borgmatic | - | Borg backup to chook |
|
| backup | borgmatic | - | Borg backup to chook |
|
||||||
| seafile | seafile, seadoc, mysql, redis, notification, md-server, seasearch | 8098, 8888, 8083, 8084, 4080 | File sync (migrated from VM) |
|
| seafile | seafile, seadoc, mysql, redis, notification, md-server, seasearch | 8098, 8888, 8083, 8084, 4080 | File sync |
|
||||||
| outline | outline, postgres, redis | 3000 | Wiki (migrated from VM) |
|
| outline | outline, postgres, redis | 3000 | Wiki |
|
||||||
|
| plane | plane, postgres, redis, minio, worker, beat-worker | 8082 | Project management |
|
||||||
|
|
||||||
|
## External Services (qsrproxy - 192.168.1.72)
|
||||||
|
|
||||||
|
| Service | Port(s) | Description |
|
||||||
|
|---------|---------|-------------|
|
||||||
|
| npm | 1880, 18443, 81 | Nginx Proxy Manager (CRITICAL) |
|
||||||
|
| prometheus | 9090 | Metrics collection |
|
||||||
|
| grafana | 3000 | Dashboards |
|
||||||
|
| alertmanager | 9093 | Alert routing |
|
||||||
|
| node-exporter | 9100 | System metrics |
|
||||||
|
|
||||||
## Deployment Order
|
## Deployment Order
|
||||||
|
|
||||||
@@ -20,78 +30,20 @@ Docker Compose stacks for Flook (192.168.1.75) managed via Portainer.
|
|||||||
2. `productivity` - GitLab, Vaultwarden, Memos, FreshRSS, Mortis
|
2. `productivity` - GitLab, Vaultwarden, Memos, FreshRSS, Mortis
|
||||||
3. `documents` - Paperless, OnlyOffice
|
3. `documents` - Paperless, OnlyOffice
|
||||||
4. `backup` - Borgmatic
|
4. `backup` - Borgmatic
|
||||||
5. `proxy` - CRITICAL - deploy carefully, brief downtime expected
|
5. `seafile` - File sync and collaboration
|
||||||
6. `seafile` - After migrating data from VM
|
6. `outline` - Wiki
|
||||||
7. `outline` - After migrating data from VM
|
7. `plane` - Project management
|
||||||
|
|
||||||
## Migration Notes
|
## Seafile Notes
|
||||||
|
|
||||||
### Seafile Migration (from VM 192.168.1.112)
|
Seafile uses multiple compose files and cannot be deployed via Portainer git stack. Deploy from command line:
|
||||||
|
|
||||||
1. **Stop Seafile on VM:**
|
|
||||||
```bash
|
```bash
|
||||||
ssh rishi@192.168.1.112
|
cd /mnt/user/appdata/seafile
|
||||||
cd /opt/seafile && docker compose down
|
docker compose up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
2. **Create directories on Flook:**
|
See `stacks/seafile/README.md` for full details.
|
||||||
```bash
|
|
||||||
mkdir -p /mnt/user/appdata/seafile/{data,db-data,seadoc-data,seasearch-data}
|
|
||||||
```
|
|
||||||
|
|
||||||
3. **Copy data:**
|
|
||||||
```bash
|
|
||||||
rsync -avP rishi@192.168.1.112:~/seafile/data/ /mnt/user/appdata/seafile/data/
|
|
||||||
rsync -avP rishi@192.168.1.112:~/seafile/db-data/ /mnt/user/appdata/seafile/db-data/
|
|
||||||
```
|
|
||||||
|
|
||||||
4. **Copy seahub_settings.py:**
|
|
||||||
```bash
|
|
||||||
cp /mnt/user/data/flook-stacks/stacks/seafile/seahub_settings.py /mnt/user/appdata/seafile/
|
|
||||||
```
|
|
||||||
|
|
||||||
5. **Deploy stack via Portainer**
|
|
||||||
|
|
||||||
### Outline Migration (from VM 192.168.1.112)
|
|
||||||
|
|
||||||
1. **Create directories on Flook:**
|
|
||||||
```bash
|
|
||||||
mkdir -p /mnt/user/appdata/outline/{postgres-data,redis}
|
|
||||||
```
|
|
||||||
|
|
||||||
2. **Export Postgres from VM:**
|
|
||||||
```bash
|
|
||||||
ssh rishi@192.168.1.112
|
|
||||||
docker exec outline-postgres-1 pg_dump -U rishi outline > ~/outline_backup.sql
|
|
||||||
```
|
|
||||||
|
|
||||||
3. **Copy backup to Flook:**
|
|
||||||
```bash
|
|
||||||
scp rishi@192.168.1.112:~/outline_backup.sql /mnt/user/appdata/outline/
|
|
||||||
```
|
|
||||||
|
|
||||||
4. **Deploy stack via Portainer** (this creates empty DB)
|
|
||||||
|
|
||||||
5. **Stop outline container temporarily:**
|
|
||||||
```bash
|
|
||||||
docker stop outline
|
|
||||||
```
|
|
||||||
|
|
||||||
6. **Import data:**
|
|
||||||
```bash
|
|
||||||
docker exec -i outline-postgres psql -U rishi outline < /mnt/user/appdata/outline/outline_backup.sql
|
|
||||||
```
|
|
||||||
|
|
||||||
7. **Start outline:**
|
|
||||||
```bash
|
|
||||||
docker start outline
|
|
||||||
```
|
|
||||||
|
|
||||||
8. **Stop VM services after verification:**
|
|
||||||
```bash
|
|
||||||
ssh rishi@192.168.1.112
|
|
||||||
cd ~/outline && docker compose down
|
|
||||||
```
|
|
||||||
|
|
||||||
## Repository
|
## Repository
|
||||||
|
|
||||||
|
|||||||
51
stacks/plane/README.md
Normal file
51
stacks/plane/README.md
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
# Plane
|
||||||
|
|
||||||
|
Project management and issue tracking with kanban boards.
|
||||||
|
|
||||||
|
## Deployment
|
||||||
|
|
||||||
|
1. Create directories:
|
||||||
|
```bash
|
||||||
|
mkdir -p /mnt/user/appdata/plane/{db-data,redis-data,minio-data}
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Deploy via Portainer git stack or:
|
||||||
|
```bash
|
||||||
|
cd /mnt/user/data/flook-stacks/stacks/plane
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Wait for all services to start (may take a few minutes on first run)
|
||||||
|
|
||||||
|
4. Access at `http://192.168.1.75:8082` or via NPM proxy
|
||||||
|
|
||||||
|
## Services
|
||||||
|
|
||||||
|
| Container | Description |
|
||||||
|
|-----------|-------------|
|
||||||
|
| plane-web | Frontend |
|
||||||
|
| plane-api | Backend API |
|
||||||
|
| plane-worker | Background jobs |
|
||||||
|
| plane-beat-worker | Scheduled tasks |
|
||||||
|
| plane-space | Public pages |
|
||||||
|
| plane-proxy | Nginx proxy |
|
||||||
|
| plane-db | PostgreSQL |
|
||||||
|
| plane-redis | Redis |
|
||||||
|
| plane-minio | S3-compatible storage |
|
||||||
|
|
||||||
|
## NPM Proxy
|
||||||
|
|
||||||
|
Add proxy host:
|
||||||
|
- Domain: `plane.rishighan.com`
|
||||||
|
- Forward: `192.168.1.75:8082`
|
||||||
|
- Enable SSL, force SSL, HTTP/2
|
||||||
|
|
||||||
|
## Volumes
|
||||||
|
|
||||||
|
- `/mnt/user/appdata/plane/db-data` - PostgreSQL data
|
||||||
|
- `/mnt/user/appdata/plane/redis-data` - Redis data
|
||||||
|
- `/mnt/user/appdata/plane/minio-data` - File uploads
|
||||||
|
|
||||||
|
## Default Login
|
||||||
|
|
||||||
|
On first access, you'll create an admin account.
|
||||||
147
stacks/plane/docker-compose.yml
Normal file
147
stacks/plane/docker-compose.yml
Normal file
@@ -0,0 +1,147 @@
|
|||||||
|
networks:
|
||||||
|
plane-net:
|
||||||
|
name: plane-net
|
||||||
|
driver: bridge
|
||||||
|
|
||||||
|
services:
|
||||||
|
plane-web:
|
||||||
|
image: makeplane/plane-frontend:stable
|
||||||
|
container_name: plane-web
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- NEXT_PUBLIC_API_BASE_URL=http://plane-api:8000
|
||||||
|
- NEXT_PUBLIC_DEPLOY_URL=https://plane.rishighan.com
|
||||||
|
depends_on:
|
||||||
|
- plane-api
|
||||||
|
networks:
|
||||||
|
- plane-net
|
||||||
|
|
||||||
|
plane-api:
|
||||||
|
image: makeplane/plane-backend:stable
|
||||||
|
container_name: plane-api
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- DEBUG=0
|
||||||
|
- DJANGO_SETTINGS_MODULE=plane.settings.production
|
||||||
|
- DATABASE_URL=postgresql://plane:plane@plane-db:5432/plane
|
||||||
|
- REDIS_URL=redis://plane-redis:6379/
|
||||||
|
- SECRET_KEY=${SECRET_KEY}
|
||||||
|
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
|
||||||
|
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
|
||||||
|
- AWS_S3_BUCKET_NAME=plane-uploads
|
||||||
|
- AWS_S3_ENDPOINT_URL=http://plane-minio:9000
|
||||||
|
- USE_MINIO=1
|
||||||
|
- MINIO_ROOT_USER=${MINIO_ROOT_USER}
|
||||||
|
- MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD}
|
||||||
|
- WEB_URL=https://plane.rishighan.com
|
||||||
|
- CORS_ALLOWED_ORIGINS=https://plane.rishighan.com
|
||||||
|
depends_on:
|
||||||
|
- plane-db
|
||||||
|
- plane-redis
|
||||||
|
networks:
|
||||||
|
- plane-net
|
||||||
|
|
||||||
|
plane-worker:
|
||||||
|
image: makeplane/plane-backend:stable
|
||||||
|
container_name: plane-worker
|
||||||
|
restart: unless-stopped
|
||||||
|
command: ./bin/worker
|
||||||
|
environment:
|
||||||
|
- DEBUG=0
|
||||||
|
- DJANGO_SETTINGS_MODULE=plane.settings.production
|
||||||
|
- DATABASE_URL=postgresql://plane:plane@plane-db:5432/plane
|
||||||
|
- REDIS_URL=redis://plane-redis:6379/
|
||||||
|
- SECRET_KEY=${SECRET_KEY}
|
||||||
|
- AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}
|
||||||
|
- AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}
|
||||||
|
- AWS_S3_BUCKET_NAME=plane-uploads
|
||||||
|
- AWS_S3_ENDPOINT_URL=http://plane-minio:9000
|
||||||
|
- USE_MINIO=1
|
||||||
|
depends_on:
|
||||||
|
- plane-db
|
||||||
|
- plane-redis
|
||||||
|
- plane-api
|
||||||
|
networks:
|
||||||
|
- plane-net
|
||||||
|
|
||||||
|
plane-beat-worker:
|
||||||
|
image: makeplane/plane-backend:stable
|
||||||
|
container_name: plane-beat-worker
|
||||||
|
restart: unless-stopped
|
||||||
|
command: ./bin/beat
|
||||||
|
environment:
|
||||||
|
- DEBUG=0
|
||||||
|
- DJANGO_SETTINGS_MODULE=plane.settings.production
|
||||||
|
- DATABASE_URL=postgresql://plane:plane@plane-db:5432/plane
|
||||||
|
- REDIS_URL=redis://plane-redis:6379/
|
||||||
|
- SECRET_KEY=${SECRET_KEY}
|
||||||
|
depends_on:
|
||||||
|
- plane-db
|
||||||
|
- plane-redis
|
||||||
|
- plane-api
|
||||||
|
networks:
|
||||||
|
- plane-net
|
||||||
|
|
||||||
|
plane-space:
|
||||||
|
image: makeplane/plane-space:stable
|
||||||
|
container_name: plane-space
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- NEXT_PUBLIC_API_BASE_URL=http://plane-api:8000
|
||||||
|
depends_on:
|
||||||
|
- plane-api
|
||||||
|
networks:
|
||||||
|
- plane-net
|
||||||
|
|
||||||
|
plane-proxy:
|
||||||
|
image: makeplane/plane-proxy:stable
|
||||||
|
container_name: plane-proxy
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "8082:80"
|
||||||
|
environment:
|
||||||
|
- FILE_SIZE_LIMIT=5242880
|
||||||
|
- BUCKET_NAME=plane-uploads
|
||||||
|
- MINIO_ROOT_USER=${MINIO_ROOT_USER}
|
||||||
|
- MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD}
|
||||||
|
depends_on:
|
||||||
|
- plane-web
|
||||||
|
- plane-api
|
||||||
|
- plane-space
|
||||||
|
networks:
|
||||||
|
- plane-net
|
||||||
|
|
||||||
|
plane-db:
|
||||||
|
image: postgres:15
|
||||||
|
container_name: plane-db
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- POSTGRES_USER=plane
|
||||||
|
- POSTGRES_PASSWORD=plane
|
||||||
|
- POSTGRES_DB=plane
|
||||||
|
volumes:
|
||||||
|
- /mnt/user/appdata/plane/db-data:/var/lib/postgresql/data
|
||||||
|
networks:
|
||||||
|
- plane-net
|
||||||
|
|
||||||
|
plane-redis:
|
||||||
|
image: redis:7
|
||||||
|
container_name: plane-redis
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /mnt/user/appdata/plane/redis-data:/data
|
||||||
|
networks:
|
||||||
|
- plane-net
|
||||||
|
|
||||||
|
plane-minio:
|
||||||
|
image: minio/minio
|
||||||
|
container_name: plane-minio
|
||||||
|
restart: unless-stopped
|
||||||
|
command: server /data --console-address ":9001"
|
||||||
|
environment:
|
||||||
|
- MINIO_ROOT_USER=${MINIO_ROOT_USER}
|
||||||
|
- MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD}
|
||||||
|
volumes:
|
||||||
|
- /mnt/user/appdata/plane/minio-data:/data
|
||||||
|
networks:
|
||||||
|
- plane-net
|
||||||
5
stacks/plane/stack.env
Normal file
5
stacks/plane/stack.env
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
SECRET_KEY=supersecretkey123456789abcdefghijklmnop
|
||||||
|
AWS_ACCESS_KEY_ID=plane
|
||||||
|
AWS_SECRET_ACCESS_KEY=planesecret123
|
||||||
|
MINIO_ROOT_USER=plane
|
||||||
|
MINIO_ROOT_PASSWORD=planesecret123
|
||||||
Reference in New Issue
Block a user