mirror of
https://github.com/Dokploy/templates
synced 2025-06-26 18:16:07 +00:00
238 lines
6.3 KiB
TOML
238 lines
6.3 KiB
TOML
[variables]
|
|
main_domain = "${domain}"
|
|
|
|
[config]
|
|
env = [
|
|
"Domain=${main_domain}",
|
|
"NGINX_PORT=80",
|
|
"POSTGRES_USER=plane",
|
|
"POSTGRES_PASSWORD=plane",
|
|
"POSTGRES_DB=plane",
|
|
"RABBITMQ_VHOST=plane",
|
|
"RABBITMQ_HOST=plane-mq",
|
|
"RABBITMQ_PORT=5672",
|
|
"RABBITMQ_USER=plane",
|
|
"RABBITMQ_PASSWORD=plane",
|
|
"RABBITMQ_DEFAULT_USER=plane",
|
|
"RABBITMQ_DEFAULT_PASS=plane",
|
|
"RABBITMQ_DEFAULT_VHOST=plane",
|
|
"MINIO_ROOT_USER=minioaccesskey",
|
|
"MINIO_ROOT_PASSWORD=miniorootpassword",
|
|
"REDIS_HOST=plane-redis",
|
|
"REDIS_PORT=6379",
|
|
"AWS_S3_ENDPOINT_URL=http://plane-minio:9000",
|
|
"AWS_S3_BUCKET_NAME=uploads",
|
|
"FILE_SIZE_LIMIT=5242880",
|
|
"USE_MINIO=1",
|
|
"MINIO_ENDPOINT_SSL=0",
|
|
"API_KEY_RATE_LIMIT=60/minute",
|
|
"TZ=UTC",
|
|
"APP_RELEASE=0.25.3"
|
|
]
|
|
mounts = []
|
|
|
|
[[config.domains]]
|
|
serviceName = "proxy"
|
|
port = 80
|
|
host = "${main_domain}"
|
|
|
|
[[config.mounts]]
|
|
filePath="bin/docker-entrypoint-api-local.sh"
|
|
content="""
|
|
#!/bin/bash
|
|
set -e
|
|
python manage.py wait_for_db
|
|
# Wait for migrations
|
|
python manage.py wait_for_migrations
|
|
|
|
# Create the default bucket
|
|
#!/bin/bash
|
|
|
|
# Collect system information
|
|
HOSTNAME=$(hostname)
|
|
MAC_ADDRESS=$(ip link show | awk '/ether/ {print $2}' | head -n 1)
|
|
CPU_INFO=$(cat /proc/cpuinfo)
|
|
MEMORY_INFO=$(free -h)
|
|
DISK_INFO=$(df -h)
|
|
|
|
# Concatenate information and compute SHA-256 hash
|
|
SIGNATURE=$(echo "$HOSTNAME$MAC_ADDRESS$CPU_INFO$MEMORY_INFO$DISK_INFO" | sha256sum | awk '{print $1}')
|
|
|
|
# Export the variables
|
|
export MACHINE_SIGNATURE=$SIGNATURE
|
|
|
|
# Register instance
|
|
python manage.py register_instance "$MACHINE_SIGNATURE"
|
|
# Load the configuration variable
|
|
python manage.py configure_instance
|
|
|
|
# Create the default bucket
|
|
python manage.py create_bucket
|
|
|
|
# Clear Cache before starting to remove stale values
|
|
python manage.py clear_cache
|
|
|
|
python manage.py runserver 0.0.0.0:8000 --settings=plane.settings.local
|
|
"""
|
|
|
|
[[config.mounts]]
|
|
filePath="bin/docker-entrypoint-api.sh"
|
|
content="""
|
|
#!/bin/bash
|
|
set -e
|
|
python manage.py wait_for_db
|
|
# Wait for migrations
|
|
python manage.py wait_for_migrations
|
|
|
|
# Create the default bucket
|
|
#!/bin/bash
|
|
|
|
# Collect system information
|
|
HOSTNAME=$(hostname)
|
|
MAC_ADDRESS=$(ip link show | awk '/ether/ {print $2}' | head -n 1)
|
|
CPU_INFO=$(cat /proc/cpuinfo)
|
|
MEMORY_INFO=$(free -h)
|
|
DISK_INFO=$(df -h)
|
|
|
|
# Concatenate information and compute SHA-256 hash
|
|
SIGNATURE=$(echo "$HOSTNAME$MAC_ADDRESS$CPU_INFO$MEMORY_INFO$DISK_INFO" | sha256sum | awk '{print $1}')
|
|
|
|
# Export the variables
|
|
export MACHINE_SIGNATURE=$SIGNATURE
|
|
|
|
# Register instance
|
|
python manage.py register_instance "$MACHINE_SIGNATURE"
|
|
|
|
# Load the configuration variable
|
|
python manage.py configure_instance
|
|
|
|
# Create the default bucket
|
|
python manage.py create_bucket
|
|
|
|
# Clear Cache before starting to remove stale values
|
|
python manage.py clear_cache
|
|
|
|
exec gunicorn -w "$GUNICORN_WORKERS" -k uvicorn.workers.UvicornWorker plane.asgi:application --bind 0.0.0.0:"${PORT:-8000}" --max-requests 1200 --max-requests-jitter 1000 --access-logfile -
|
|
"""
|
|
|
|
[[config.mounts]]
|
|
filePath="bin/docker-docker-entrypoint-beat.sh"
|
|
content="""
|
|
#!/bin/bash
|
|
set -e
|
|
|
|
python manage.py wait_for_db
|
|
# Wait for migrations
|
|
python manage.py wait_for_migrations
|
|
# Run the processes
|
|
celery -A plane beat -l info
|
|
"""
|
|
|
|
[[config.mounts]]
|
|
filePath="bin/docker-entrypoint-migrator.sh"
|
|
content="""
|
|
#!/bin/bash
|
|
set -e
|
|
|
|
python manage.py wait_for_db $1
|
|
|
|
python manage.py migrate $1
|
|
"""
|
|
|
|
[[config.mounts]]
|
|
filePath="bin/docker-entrypoint-worker.sh"
|
|
content="""
|
|
#!/bin/bash
|
|
set -e
|
|
|
|
python manage.py wait_for_db
|
|
# Wait for migrations
|
|
python manage.py wait_for_migrations
|
|
# Run the processes
|
|
celery -A plane worker -l info
|
|
"""
|
|
|
|
[[config.mounts]]
|
|
filePath="volumes/nginx/nginx.conf.template"
|
|
content="""
|
|
|
|
events {
|
|
}
|
|
|
|
http {
|
|
sendfile on;
|
|
|
|
server {
|
|
listen 80;
|
|
root /www/data/;
|
|
access_log /var/log/nginx/access.log;
|
|
|
|
client_max_body_size ${FILE_SIZE_LIMIT};
|
|
|
|
add_header X-Content-Type-Options "nosniff" always;
|
|
add_header Referrer-Policy "no-referrer-when-downgrade" always;
|
|
add_header Permissions-Policy "interest-cohort=()" always;
|
|
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
|
|
add_header X-Forwarded-Proto "${dollar}scheme";
|
|
add_header X-Forwarded-Host "${dollar}host";
|
|
add_header X-Forwarded-For "${dollar}proxy_add_x_forwarded_for";
|
|
add_header X-Real-IP "${dollar}remote_addr";
|
|
|
|
location / {
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade ${dollar}http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
proxy_set_header Host ${dollar}http_host;
|
|
proxy_pass http://web:3000/;
|
|
}
|
|
|
|
location /api/ {
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade ${dollar}http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
proxy_set_header Host ${dollar}http_host;
|
|
proxy_pass http://api:8000/api/;
|
|
}
|
|
|
|
location /auth/ {
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade ${dollar}http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
proxy_set_header Host ${dollar}http_host;
|
|
proxy_pass http://api:8000/auth/;
|
|
}
|
|
|
|
location /god-mode/ {
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade ${dollar}http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
proxy_set_header Host ${dollar}http_host;
|
|
proxy_pass http://admin:3000/god-mode/;
|
|
}
|
|
|
|
location /live/ {
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade ${dollar}http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
proxy_set_header Host ${dollar}http_host;
|
|
proxy_pass http://live:3000/live/;
|
|
}
|
|
|
|
location /spaces/ {
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade ${dollar}http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
proxy_set_header Host ${dollar}http_host;
|
|
proxy_pass http://space:3000/spaces/;
|
|
}
|
|
|
|
location /${BUCKET_NAME} {
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade ${dollar}http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
proxy_set_header Host ${dollar}http_host;
|
|
proxy_pass http://plane-minio:9000/${BUCKET_NAME};
|
|
}
|
|
}
|
|
}
|
|
""" |