Sign inSign up

openbun/revive-adserver

By openbun

•Updated 2 days ago

Docker image for Revive-adserver

Image
Integration & delivery
0

436

openbun/revive-adserver repository overview

⁠Revive Adserver 6.0.8

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.

⁠Image and source

  • Image: openbun/revive-adserver:6.0.8
  • Platform: linux/amd64. ARM64 is not currently published.
  • Use the explicit 6.0.8 tag; no latest tag is currently promised.
  • Source and issue reports: OpenBun/ReviveAdserverDocker⁠
  • Software package: official 6.0.8 ZIP⁠
  • ZIP SHA-256: 8ea81978b876bfeeea1a985e2b9a2bc9a62b1e6fc9bad99e4756a933f588b38d
  • Upstream software license: GPL-2.0-or-later.
docker 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.

⁠Easypanel App: use Docker Image source

  1. Create a MariaDB service in the same Easypanel project. Note its internal hostname and credentials. Use an empty database for a fresh install.
  2. Create an App service. Source: Docker Image. Image: openbun/revive-adserver:6.0.8. No GitHub build is required.
  3. Add the four Volume mounts shown below.
  4. Add the runtime environment settings shown below; put real credentials only in Easypanel.
  5. Add your domain: public HTTPS, internal HTTP, container port 80. Keep one app replica and the default start command.
  6. Deploy, then open https://YOUR-DOMAIN/app/www/admin/ and complete the browser installer.
⁠Persistent volume steps

In App → Storage → Add Volume Mount, create:

Volume nameContainer 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.

⁠Easypanel App environment example

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.
  • Use the database's internal hostname and port 3306, not localhost or a public forwarding port.
  • Environment settings configure a connection; they do not create the MariaDB service or import a database.
  • For the browser installer, use these same DB details. Use a different strong password for the administrator.
⁠Optional first-install automation

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.

⁠Raw Docker Compose: pull the image, do not build

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.

⁠Compose .env example

Fill 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.

⁠Maintenance

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.

⁠Backups and upgrades

  • Back up the database and all four application volumes together; keep backups private and off-server.
  • Do not use this 6.0.8 image with a 6.1.0-dev or newer database. Downgrades and incompatible development snapshots are refused.
  • Release changes need a tested, authenticated upgrade procedure. Pulling a different tag alone does not upgrade schemas or installed plugin data.
  • Never bypass release markers, delete volumes, or run the fresh installer over existing data.
  • PHP sendmail is disabled. Configure the bundled Mailer plugin for SMTP. Configure GeoIP credentials/downloads deliberately if required.
  • /healthz checks Apache only. Verify real ads, tracking, reports and maintenance before production use.

See the source deployment instructions⁠ and the official Revive documentation⁠.

Tag summary

Content type

Image

Digest

sha256:1477c0d5a…

Size

204.9 MB

Last updated

2 days ago

docker pull openbun/revive-adserver:6.0.8