Docker image for Revive-adserver
436
Community-maintained Docker packaging of the official Revive Adserver 6.0.8 ZIP, with PHP 8.4 and Apache. Includes safe persistent-directory initialization, permission repair, and an optional fresh-install command.
This is not a Docker Official Image or an image published by the Revive Adserver project.
openbun/revive-adserver:6.0.8linux/amd64. ARM64 is not currently published.6.0.8 tag; no latest tag is currently promised.8ea81978b876bfeeea1a985e2b9a2bc9a62b1e6fc9bad99e4756a933f588b38ddocker pull openbun/revive-adserver:6.0.8
No application database, administrator account, private configuration or uploaded banners are bundled. MariaDB must be deployed separately or through the Compose example below.
openbun/revive-adserver:6.0.8. No GitHub build is required.https://YOUR-DOMAIN/app/www/admin/ and complete the browser installer.In App → Storage → Add Volume Mount, create:
| Volume name | Container mount path |
|---|---|
revive-var | /var/www/html/app/var |
revive-images | /var/www/html/app/www/images |
revive-plugins | /var/www/html/app/plugins |
revive-admin-plugins | /var/www/html/app/www/admin/plugins |
Use Volume, not File mounts. Do not mount the system /var, the whole app directory, or /opt/revive-seed.
The image seeds packaged defaults into empty volumes and sets the required permissions. No manual file upload is needed. Later redeploys preserve configuration, uploads and plugin settings.
Keep these four volumes attached. Never delete them or use docker compose down -v on data you want to retain.
Paste into App → Environment, replacing the placeholders privately:
REVIVE_HOST=ads.example.com
REVIVE_SCHEME=https
REVIVE_DB_HOST=YOUR_EASYPANEL_INTERNAL_DB_HOST
REVIVE_DB_PORT=3306
REVIVE_DB_NAME=revive
REVIVE_DB_USER=revive
REVIVE_DB_PASSWORD=YOUR_PRIVATE_DATABASE_PASSWORD
REVIVE_AUTO_INSTALL=0
TZ=UTC
REVIVE_HOST is the actual application hostname, without https:// or a path.localhost or a public forwarding port.For a fresh empty database, also set:
REVIVE_AUTO_INSTALL=1
REVIVE_ADMIN_USERNAME=your-unique-admin-name
REVIVE_ADMIN_PASSWORD=YOUR_LONG_PRIVATE_ADMIN_PASSWORD
[email protected]
The official installer runs once. After successful setup, remove the administrator password from the environment and set REVIVE_AUTO_INSTALL=0. Existing configuration is not reinitialized; database upgrades are never run silently.
The standalone configuration below includes MariaDB and five persistent named volumes. It does not have a build section or need a source checkout.
For Easypanel Compose, paste it as an Inline Compose service. Enter the Compose environment values below, enable .env creation if required by your panel, deploy, and route your domain to web port 80.
There are no host port mappings in this example: Easypanel or another reverse proxy handles HTTP/HTTPS. For direct localhost access, combine it with the repository's docker-compose.local.yml overlay.
.env exampleFill in two different long random database passwords before deploying. Blank required passwords are intentionally rejected.
COMPOSE_PROJECT_NAME=revive
REVIVE_IMAGE=openbun/revive-adserver:6.0.8
MARIADB_IMAGE=mariadb:11.4
DB_NAME=revive
DB_USER=revive
# Fill two DIFFERENT long passwords before deploying. Never publish real .env.
DB_PASSWORD=
DB_ROOT_PASSWORD=
REVIVE_HOST=localhost:8080
REVIVE_SCHEME=http
HTTP_PORT=8080
# Optional automatic install on a fresh EMPTY database only.
REVIVE_AUTO_INSTALL=0
REVIVE_ADMIN_USERNAME=
REVIVE_ADMIN_PASSWORD=
REVIVE_ADMIN_EMAIL=
Compose variables such as DB_PASSWORD are mapped into the app's REVIVE_DB_PASSWORD automatically. With a standalone Easypanel App, set the REVIVE_DB_* variables directly instead.
For a public HTTPS domain change REVIVE_HOST to your hostname and REVIVE_SCHEME=https. The defaults above are for localhost testing.
docker-compose.image.yml# Standalone: pulls Docker Hub images; no source checkout or build step required.
name: ${COMPOSE_PROJECT_NAME:-revive}
x-app: &app
image: ${REVIVE_IMAGE:-openbun/revive-adserver:6.0.8}
restart: unless-stopped
environment:
REVIVE_HOST: ${REVIVE_HOST:-localhost:8080}
REVIVE_SCHEME: ${REVIVE_SCHEME:-http}
REVIVE_DB_HOST: db
REVIVE_DB_PORT: "3306"
REVIVE_DB_NAME: ${DB_NAME:-revive}
REVIVE_DB_USER: ${DB_USER:-revive}
REVIVE_DB_PASSWORD: ${DB_PASSWORD:?Set DB_PASSWORD}
REVIVE_AUTO_INSTALL: ${REVIVE_AUTO_INSTALL:-0}
REVIVE_ADMIN_USERNAME: ${REVIVE_ADMIN_USERNAME:-}
REVIVE_ADMIN_PASSWORD: ${REVIVE_ADMIN_PASSWORD:-}
REVIVE_ADMIN_EMAIL: ${REVIVE_ADMIN_EMAIL:-}
TZ: UTC
volumes:
- revive-var:/var/www/html/app/var
- revive-images:/var/www/html/app/www/images
- revive-plugins:/var/www/html/app/plugins
- revive-admin-plugins:/var/www/html/app/www/admin/plugins
depends_on:
db:
condition: service_healthy
security_opt:
- no-new-privileges:true
logging:
driver: json-file
options:
max-size: 10m
max-file: "3"
services:
db:
image: ${MARIADB_IMAGE:-mariadb:11.4}
restart: unless-stopped
environment:
MARIADB_DATABASE: ${DB_NAME:-revive}
MARIADB_USER: ${DB_USER:-revive}
MARIADB_PASSWORD: ${DB_PASSWORD:?Set DB_PASSWORD}
MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:?Set DB_ROOT_PASSWORD}
TZ: UTC
volumes:
- mariadb-data:/var/lib/mysql
networks: [database]
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 5s
timeout: 5s
retries: 30
start_period: 20s
web:
<<: *app
networks: [database, frontend]
expose: ["80"]
healthcheck:
test: ["CMD", "curl", "--fail", "--silent", "http://127.0.0.1/healthz"]
interval: 15s
timeout: 5s
retries: 5
maintenance:
<<: *app
profiles: [maintenance]
networks: [database, frontend]
environment:
REVIVE_HOST: ${REVIVE_HOST:-localhost:8080}
REVIVE_SCHEME: ${REVIVE_SCHEME:-http}
REVIVE_AUTO_INSTALL: "0"
TZ: UTC
command: [maintenance]
networks:
database:
internal: true
frontend: {}
volumes:
mariadb-data:
revive-var:
revive-images:
revive-plugins:
revive-admin-plugins:
With these files saved locally:
docker compose --env-file .env -f docker-compose.image.yml config --quiet
docker compose --env-file .env -f docker-compose.image.yml pull
docker compose --env-file .env -f docker-compose.image.yml up -d
To access it without a reverse proxy, obtain docker-compose.local.yml from the source repository and add it:
docker compose --env-file .env -f docker-compose.image.yml -f docker-compose.local.yml up -d
Then open http://localhost:8080/app/www/admin/. For the browser installer in this Compose setup, the database host is db, port 3306, with your DB_NAME, DB_USER and DB_PASSWORD.
Revive needs regular maintenance for statistics, campaign scheduling and priorities. After installation with Compose:
docker compose -f docker-compose.image.yml exec --user root web revive-enable-maintenance
docker compose -f docker-compose.image.yml --profile maintenance up -d maintenance
This disables request-triggered maintenance and enables the shared-state worker at minute 01 each UTC hour. In Easypanel Compose, you can set COMPOSE_PROFILES=maintenance, run revive-enable-maintenance in the web container's shell and redeploy.
For a single Easypanel App, arrange a host scheduler or dedicated worker sharing the same state, running as www-data hourly:
php /var/www/html/app/scripts/maintenance/maintenance.php YOUR-DOMAIN
Do not run two schedulers against one instance. Do not disable automatic maintenance until a reliable replacement is in place. The optional CLI fresh-install path disables it intentionally, so configure scheduling afterwards.
/healthz checks Apache only. Verify real ads, tracking, reports and maintenance before production use.See the source deployment instructions and the official Revive documentation.
Content type
Image
Digest
sha256:1477c0d5a…
Size
204.9 MB
Last updated
2 days ago
docker pull openbun/revive-adserver:6.0.8