This page describes the production deployment pattern for Propulence docs.
Wiki.js serves dynamic documentation content.
3000docs.propulence.com to 127.0.0.1:3000The repository uses .github/workflows/deploy-ec2.yml.
On push to main or manual run, the workflow:
docker-compose.wikijs.yml and supporting files.env.wikijs from GitHub secrets and varsdocker compose to start/update Wiki.js and PostgreSQLRun these commands on Ubuntu EC2:
sudo apt update
sudo apt install -y docker.io docker-compose-plugin rsync
sudo systemctl enable docker
sudo systemctl start docker
sudo mkdir -p /opt/propulence-docs
sudo chown -R $USER:$USER /opt/propulence-docs
Create Nginx server config at /etc/nginx/sites-available/docs.propulence.com:
server {
listen 80;
listen [::]:80;
server_name docs.propulence.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Enable and reload:
sudo ln -sf /etc/nginx/sites-available/docs.propulence.com /etc/nginx/sites-enabled/docs.propulence.com
sudo nginx -t
sudo systemctl reload nginx
The repository includes .github/workflows/deploy-ec2.yml.
It syncs Wiki.js Docker deployment files to EC2, then runs:
docker compose --env-file .env.wikijs -f docker-compose.wikijs.yml up -d --remove-orphans
Add these secrets in GitHub -> Settings -> Secrets and variables -> Actions:
EC2_HOST: Public IP or hostname of EC2 serverEC2_USER: SSH user (for example ubuntu)EC2_SSH_PRIVATE_KEY: Private key content for SSH deployment userEC2_DOCKER_APP_PATH: Optional deploy path (default /opt/propulence-docs)WIKIJS_DB_PASSWORD: Password for Wiki.js PostgreSQL databaseOptional repository variables:
WIKIJS_DB_USER (default wikijs)WIKIJS_DB_NAME (default wikijs)WIKIJS_APP_PORT (default 3000)Create DNS record:
docsUse your preferred TLS termination approach:
Run workflow: Actions -> Deploy Docs to EC2 (Ubuntu) -> Run workflow.
docker compose: verify Docker and compose plugin are installed on EC2.sudo docker ps).127.0.0.1:3000.