Deploying Bludit CMS on YunoHost using Docker (Port 50328)
This entry documents the efficient deployment of Bludit CMS, a flat-file content management system, within a YunoHost environment using Docker.
The objective is to achieve a clean separation of concerns: keeping the application containerised while leveraging YunoHost's Nginx reverse proxy for domain management and SSL termination. This method minimises system conflicts and ensures easier backups through Docker volumes.
System Specifications
- Target Domain:
market.nulu.my - Internal Port:
50328 - Persistence Strategy: Docker Named Volumes (to avoid permission issues with
bind mountson the host filesystem).
1. Directory Structure & Preparation
We begin by establishing a dedicated directory. This standardises where our configuration files live, making future maintenance easier.
mkdir -p /opt/bludit
cd /opt/bludit
2. Configuration (docker-compose.yml)
Create the configuration file:
nano docker-compose.yml
Paste the following configuration.
Critical Note: We explicitly map three separate volumes (content, themes, plugins). This is essential because Bludit stores data in flat files; if we do not persist these specific directories, all data (including installed themes and plugins) would be lost during a container restart or update.
services:
bludit:
image: bludit/docker:latest
container_name: bludit_cms
restart: unless-stopped
ports:
- "50328:80" # Maps Host Port 50328 -> Container Port 80
volumes:
# Named volumes for data persistence
- bludit_content:/usr/share/nginx/html/bl-content
- bludit_themes:/usr/share/nginx/html/bl-themes
- bludit_plugins:/usr/share/nginx/html/bl-plugins
environment:
- PUID=1000 # Matches standard user permissions
- PGID=1000
volumes:
bludit_content:
bludit_themes:
bludit_plugins:
3. Deployment & Verification
Launch the container in detached mode:
docker compose up -d
Verification Step: Before configuring the domain, verify the container is active and listening on the correct port:
docker compose ps
# Ensure status is 'Up' and ports list '0.0.0.0:50328->80/tcp'
4. YunoHost Integration (Reverse Proxy)
To make the site accessible via the public internet without exposing the raw port, we configure YunoHost to proxy traffic.
- Access Admin Panel: Navigate to Applications > Install.
- Select App: Search for and install "Redirect" (or "My Webapp" if you prefer manual Nginx config, but Redirect is cleaner for pure proxying).
- Configure Settings:
- Domain:
market.nulu.my - URL Path:
/ - Destination URL:
http://127.0.0.1:50328 - Redirect Type: Proxy (Invisible Proxy)
5. Post-Installation Notes
- Plugin Management: Since we used Docker Volumes, you should install plugins and themes directly via the Bludit Admin Panel (Upload feature).
- Troubleshooting: If the site loads but assets (CSS/Images) are broken, check the "Site URL" setting in the Bludit Admin panel > Settings > General, and ensure it matches
https://market.nulu.my.
This documentation is part of an ongoing effort to standardise self-hosting deployments and improve information literacy regarding server management.
```plaintext
Deploying Bludit CMS on YunoHost using Docker (Port 50328)
deploying-bludit-cms-yunohost-docker