⚠️ Important Notice: There is NO official Sentora Docker image. Only community-maintained images exist, and most are outdated. This guide covers community options and recommends alternatives.
| Image | Maintainer | Last Update | Pulls | Status |
|---|---|---|---|---|
yofreke/sentora |
yofreke | 10 years ago | 1.4K | ⚠️ Abandoned |
l2eg2et/sentora |
l2eg2et | 9 years ago | 295 | ⚠️ Abandoned |
stennychong/sentora |
stennychong | 6 years ago | 82 | ⚠️ Outdated |
kunalgautam/sentora |
kunalgautam | 6 years ago | 69 | ⚠️ Outdated |
dujunio/sentora |
dujunio | 3 years ago | 91 | ⚠️ Most recent |
⚠️ Security Warning: These images are:
For production deployments, use native installation instead:
If you must test Sentora in Docker for lab/evaluation purposes:
# ⚠️ WARNING: Outdated image, use only for testing
docker run -d \
--name sentora \
-p 80:80 \
-p 443:443 \
-p 8080:8080 \
-v sentora_data:/etc/sentora \
-v sentora_mysql:/var/lib/mysql \
--restart unless-stopped \
dujunio/sentora:latest
Create a Dockerfile for better control:
FROM ubuntu:22.04
LABEL maintainer="your-email@example.com"
LABEL description="Sentora Web Hosting Control Panel"
# Set environment variables
ENV DEBIAN_FRONTEND=noninteractive
ENV SENTORA_VERSION=2.0.2
ENV SENTORA_DOMAIN=sentora.example.com
ENV SENTORA_ADMIN_EMAIL=admin@example.com
# Update base system
RUN apt-get update && apt-get upgrade -y && \
apt-get install -y \
curl \
wget \
sudo \
git \
unzip \
&& rm -rf /var/lib/apt/lists/*
# Create temporary directory
WORKDIR /tmp/sentora
# Download Sentora installer
RUN curl -L -o sentora-install.sh \
https://raw.githubusercontent.com/sentora/sentora-installers/master/install.sh && \
chmod +x sentora-install.sh
# Expose ports
EXPOSE 80 443 8080 21 25 53 110 143 993 995
# Volume for persistence
VOLUME ["/etc/sentora", "/var/sentora", "/var/lib/mysql"]
# Health check
HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
CMD curl -f http://localhost:8080/ || exit 1
# Start script
COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
Create docker-entrypoint.sh:
#!/bin/bash
set -e
# Initialize Sentora on first run
if [ ! -d "/etc/sentora/panel" ]; then
echo "Initializing Sentora for the first time..."
cd /tmp/sentora
export SENTORA_DOMAIN="${SENTORA_DOMAIN}"
export SENTORA_ADMIN_EMAIL="${SENTORA_ADMIN_EMAIL}"
export MYSQL_ROOT_PASSWORD="${MYSQL_ROOT_PASSWORD:-SentoraRootPass123!}"
export SENTORA_ADMIN_PASSWORD="${SENTORA_ADMIN_PASSWORD:-SentoraAdminPass456!}"
./sentora-install.sh
fi
# Start services
echo "Starting services..."
service mysql start || true
service apache2 start || true
service bind9 start || true
service proftpd start || true
exec "$@"
Create docker-compose.yml:
version: '3.8'
services:
sentora:
build: .
container_name: sentora
hostname: sentora.example.com
ports:
- "80:80"
- "443:443"
- "8080:8080"
- "21:21" # FTP
- "25:25" # SMTP
- "53:53" # DNS
- "110:110" # POP3
- "143:143" # IMAP
- "993:993" # IMAPS
- "995:995" # POP3S
volumes:
- sentora_panel:/etc/sentora
- sentora_mysql:/var/lib/mysql
- sentora_logs:/var/log
environment:
- SENTORA_DOMAIN=sentora.example.com
- SENTORA_ADMIN_EMAIL=admin@example.com
- MYSQL_ROOT_PASSWORD=ChangeMeStrongPassword123!
- SENTORA_ADMIN_PASSWORD=ChangeMeStrongPassword456!
restart: unless-stopped
networks:
- sentora_network
volumes:
sentora_panel:
driver: local
sentora_mysql:
driver: local
sentora_logs:
driver: local
networks:
sentora_network:
driver: bridge
Build and run:
# Build the image
docker-compose build
# Start Sentora
docker-compose up -d
# View logs
docker-compose logs -f sentora
# Stop services
docker-compose down
After container starts:
URL: http://sentora.example.com:8080/
Username: admin
Password: (set during installation)
# Check container status
docker ps | grep sentora
# Check logs
docker logs sentora
# Access container shell
docker exec -it sentora bash
# Verify services inside container
docker exec -it sentora systemctl status apache2
docker exec -it sentora systemctl status mysql
# Backup Sentora configuration
docker run --rm \
-v sentora_sentora_panel:/data \
-v $(pwd):/backup \
alpine tar czf /backup/sentora-panel-backup.tar.gz /data
# Backup MySQL database
docker exec sentora mysqldump -u root -p sentora > sentora-db-backup.sql
⚠️ Critical Security Notes:
See Sentora Security for comprehensive guidance:
# docker-compose.override.yml for security
version: '3.8'
services:
sentora:
environment:
# Restrict panel access
- ALLOWED_IPS=10.0.0.0/24,192.168.1.0/24
networks:
sentora_network:
ipv4_address: 172.20.0.10
# Read-only root filesystem
read_only: true
tmpfs:
- /tmp
- /var/run
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
cap_add:
- NET_BIND_SERVICE
| Limitation | Impact |
|---|---|
| No official image | Must trust community builds or create your own |
| Outdated versions | Security vulnerabilities may exist |
| Complex service dependencies | Apache, MySQL, BIND, ProFTPd in one container |
| Persistence complexity | Multiple volumes required |
| Network configuration | Multiple ports need exposure |
| Resource intensive | Full LAMP stack in single container |
Consider these actively maintained alternatives with better Docker support:
| Panel | Docker Support | Status |
|---|---|---|
| HestiaCP | Community images | ✅ Active |
| CyberPanel | Official images | ✅ Active |
| CloudPanel | Native installer | ✅ Active |
| DirectAdmin | Custom images | ✅ Active |
# Check logs
docker logs sentora
# Check resource allocation
docker stats sentora
# Verify volumes
docker volume ls | grep sentora
# Access container
docker exec -it sentora bash
# Check services
service apache2 status
service mysql status
service named status
service proftpd status
# Check logs
tail -f /var/log/apache2/error.log
# Check port mapping
docker port sentora
# Verify firewall
sudo ufw status
# Test locally
curl -I http://localhost:8080
Deploying Sentora in containers for production? Our consulting covers:
Get expert help: office@linux-server-admin.com | Contact Page