{"id":31056446,"url":"https://github.com/damalis/full-stack-apache2-eprints-for-everyone-with-docker-compose","last_synced_at":"2026-07-19T05:31:44.041Z","repository":{"id":310864145,"uuid":"1041544914","full_name":"damalis/full-stack-apache2-eprints-for-everyone-with-docker-compose","owner":"damalis","description":"If You want to build a repository with EPrints at short time; install full stack apache2 EPrints with Docker Compose. Plus, manage docker containers with Portainer, and even secure your site with SSL.","archived":false,"fork":false,"pushed_at":"2026-06-20T09:21:57.000Z","size":219,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-20T11:15:24.705Z","etag":null,"topics":["archive","archived","eprints","repository","shared-library","sharing","sharing-data","sharing-platform"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/damalis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["damalis"]}},"created_at":"2025-08-20T16:38:21.000Z","updated_at":"2026-06-20T09:22:01.000Z","dependencies_parsed_at":"2025-09-05T18:06:08.389Z","dependency_job_id":"e9006682-d679-4f85-a93b-5582bd83494f","html_url":"https://github.com/damalis/full-stack-apache2-eprints-for-everyone-with-docker-compose","commit_stats":null,"previous_names":["damalis/full-stack-apache2-eprints-for-everyone-with-docker-compose"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/damalis/full-stack-apache2-eprints-for-everyone-with-docker-compose","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damalis%2Ffull-stack-apache2-eprints-for-everyone-with-docker-compose","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damalis%2Ffull-stack-apache2-eprints-for-everyone-with-docker-compose/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damalis%2Ffull-stack-apache2-eprints-for-everyone-with-docker-compose/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damalis%2Ffull-stack-apache2-eprints-for-everyone-with-docker-compose/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/damalis","download_url":"https://codeload.github.com/damalis/full-stack-apache2-eprints-for-everyone-with-docker-compose/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/damalis%2Ffull-stack-apache2-eprints-for-everyone-with-docker-compose/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35642986,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-19T02:00:06.923Z","response_time":112,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["archive","archived","eprints","repository","shared-library","sharing","sharing-data","sharing-platform"],"created_at":"2025-09-15T05:21:09.695Z","updated_at":"2026-07-19T05:31:44.035Z","avatar_url":"https://github.com/damalis.png","language":"Shell","funding_links":["https://github.com/sponsors/damalis"],"categories":[],"sub_categories":[],"readme":"# [full stack apache2 EPrints for everyone with docker compose](https://github.com/damalis/full-stack-apache2-eprints-for-everyone-with-docker-compose)\n\nIf You want to build a EPrints at short time;\n\n#### Full stack Apache2 EPrints:\n[![EPrints](https://img.shields.io/badge/EPrints-Open%20Access%20Repository-2E7D32?style=flat)](https://www.eprints.org/)\n[![Docker](https://img.shields.io/badge/Docker-2496ED?style=flat\u0026logo=docker\u0026logoColor=white)](https://www.docker.com/)\n[![MariaDB](https://img.shields.io/badge/MariaDB-003545?style=flat\u0026logo=mariadb\u0026logoColor=white)](https://mariadb.org/)\n[![MySQL](https://img.shields.io/badge/MySQL-4479A1?style=flat\u0026logo=mysql\u0026logoColor=white)](https://dev.mysql.com/)\n[![Apache2](https://img.shields.io/badge/Apache2-D22128?style=flat\u0026logo=apache\u0026logoColor=white)](https://www.apache.org)\n[![Perl](https://img.shields.io/badge/Perl-39457E?style=flat\u0026logo=perl\u0026logoColor=white)](https://www.perl.org/)\n[![phpMyAdmin](https://img.shields.io/badge/phpMyAdmin-6C78AF?style=flat\u0026logo=phpmyadmin\u0026logoColor=white)](https://www.phpmyadmin.net/)\n[![Certbot](https://img.shields.io/badge/Certbot-003A70?style=flat\u0026logo=letsencrypt\u0026logoColor=white)](https://certbot.eff.org/)\n[![Let's Encrypt](https://img.shields.io/badge/Let's%20Encrypt-003A70?style=flat\u0026logo=letsencrypt\u0026logoColor=white)](https://letsencrypt.org/)\n[![Portainer](https://img.shields.io/badge/Portainer-13BEF9?style=flat\u0026logo=portainer\u0026logoColor=white)](https://www.portainer.io/?hsLang=en)\n[![Docker Compose](https://img.shields.io/badge/Docker%20Compose-2496ED?style=flat\u0026logo=docker\u0026logoColor=white)](https://docs.docker.com/compose/)\n[![Bash](https://img.shields.io/badge/Bash-4EAA25?style=flat\u0026logo=gnubash\u0026logoColor=white)](https://www.gnu.org/software/bash/)\n[![Backup](https://img.shields.io/badge/Backup-6C757D?style=flat\u0026logo=icloud\u0026logoColor=white)](https://www.offen.dev/)\n\nPlus, manage docker containers with Portainer.\n\n#### Supported CPU architectures:\n![Linux-arm64/aarch64](https://img.shields.io/badge/Linux-arm64/aarch64-lightgrey)\n![Linux-x86-64](https://img.shields.io/badge/Linux-X86--64-lightgrey)\n\n#### Supported Linux Package Manage Systems:\n![apk](https://img.shields.io/badge/apk-0D597F)\n![dnf-yum](https://img.shields.io/badge/dnf-yum-73BA25)\n![apt/apt-get](https://img.shields.io/badge/apt-apt--get-E95420)\n![zypper](https://img.shields.io/badge/zypper-73BA25)\n![pacman](https://img.shields.io/badge/pacman-1793D1)\n\n#### Supported Linux Operation Systems:\n[![Alpine Linux](https://img.shields.io/badge/alpine_linux-0D597F?style=flat\u0026logo=alpine-linux\u0026logoColor=white)](https://alpinelinux.org/)\n[![Fedora](https://img.shields.io/badge/Fedora-blue?style=flat\u0026logo=Fedora\u0026logoColor=white)](https://fedoraproject.org/)\n[![CentOS](https://img.shields.io/badge/CentOS-262577?style=flat-square\u0026logo=CentOS\u0026logoColor=white)](https://www.centos.org/)\n[![Debian](https://img.shields.io/badge/debian-red?style=flat\u0026logo=debian\u0026logoColor=orange\u0026color=darkred)](https://www.debian.org/)\n[![Ubuntu](https://img.shields.io/badge/Ubuntu-E95420?style=flat\u0026logo=Ubuntu\u0026logoColor=white)](https://www.ubuntu.com/)\n[![Red Hat](https://img.shields.io/badge/Red_Hat-EE0000?style=flat\u0026logo=redhat\u0026logoColor=white)](https://www.redhat.com/en/technologies/linux-platforms/enterprise-linux)\n[![openSUSE](https://img.shields.io/badge/openSUSE-73BA25?style=flat\u0026logo=SUSE\u0026logoColor=white)](https://www.opensuse.org/)\n[![Arch Linux](https://img.shields.io/badge/Arch%20Linux-1793D1?style=flat\u0026logo=arch-linux\u0026logoColor=fff)](https://archlinux.org/)\n[![Raspberry Pi](https://img.shields.io/badge/Raspberry%20Pi-red?logo=raspberrypi)](https://www.raspberrypi.com/)\n\n##### Note: Fedora 37, 39 and alpine linux x86-64 compatible, could not try sles IBM Z s390x, rhel IBM Z s390x and raspberrypi.\n##### After installing the repository, a system reboot is required on Red Hat OS, Arch Linux.\n\n#### With this project you can quickly run the following:\n\n- [EPrints](https://github.com/eprints)\n- [webserver (apache2/httpd)](https://hub.docker.com/_/httpd)\n- [certbot (letsencrypt)](https://hub.docker.com/r/certbot/certbot)\n- [phpMyAdmin](https://hub.docker.com/r/phpmyadmin/phpmyadmin/)\n- [Mariadb](https://hub.docker.com/_/mariadb) [Mysql](https://hub.docker.com/_/mysql)\n- [backup](https://hub.docker.com/r/offen/docker-volume-backup)\n\n#### For certbot (letsencrypt) certificate:\n\n- [Set DNS configuration of your domain name](https://support.google.com/a/answer/48090?hl=en)\n\n#### IPv4/IPv6 Firewall\nCreate rules to open ports to the internet, or to a specific IPv4 address or range.\n\n- http: 80\n- https: 443\n- portainer: 9001\n- phpmyadmin: 9090\n\n#### Contents:\n\n- [Auto Configuration and Installation](#automatic)\n- [Manual Configuration and Installation](#manual)\n\t- [Requirements](#requirements)\n\t- [Configuration](#configuration)\n\t- [Installation](#installation)\n- [Portainer Installation](#portainer)\n- [Usage](#usage)\n\t- [EPrints](#eprints)\n\t- [Webserver](#webserver)\n\t- [Website](#website)\n\t- [phpMyAdmin](#phpmyadmin)\n\t- [backup](#backup)\n\n### Automatic\n\n#### Exec install shell script for auto installation and configuration\n\ndownload with\n\n```\ngit clone https://github.com/damalis/full-stack-apache2-eprints-for-everyone-with-docker-compose.git\n```\n\nOpen a terminal and `cd` to the folder in which `docker-compose.yml` is saved and run:\n\n```\ncd full-stack-apache2-eprints-for-everyone-with-docker-compose\nchmod +x install.sh\nLC_ALL=C.UTF-8 ./install.sh # LC_ALL=C.UTF-8 if not os language english\n```\n\n### Manual\n\n#### Requirements\n\nMake sure you have the latest versions of **Docker** and **Docker Compose** installed on your machine.\n\n- [How install docker](https://docs.docker.com/engine/install/)\n- [How install docker compose](https://docs.docker.com/compose/install/)\n\nClone this repository or copy the files from this repository into a new folder.\n\nMake sure to [add your user to the `docker` group](https://docs.docker.com/install/linux/linux-postinstall/#manage-docker-as-a-non-root-user).\n\n#### Configuration\n\ndownload with\n\n```\ngit clone https://github.com/damalis/full-stack-apache2-eprints-for-everyone-with-docker-compose.git\n```\n\nOpen a terminal and `cd` to the folder in which `docker-compose.yml` is saved and run:\n\n```\ncd full-stack-apache2-eprints-for-everyone-with-docker-compose\n```\n\nCopy the example environment into `.env`\n\n```\ncp env.example .env\n```\n\nEdit the `.env` file to change values of\n\n|```LOCAL_TIMEZONE```|```SUBDOMAIN```|```DOMAIN_NAME```|```DIRECTORY_PATH```|```LETSENCRYPT_EMAIL```|\n|```DB_USER```|```DB_PASSWORD```|```DB_NAME```|```MYSQL_ROOT_PASSWORD```|```DATABASE_IMAGE_NAME```|\n|```DATABASE_CONT_NAME```|```DATABASE_PACKAGE_MANAGER```|```DATABASE_ADMIN_COMMANDLINE```|```PMA_CONTROLUSER```|```PMA_CONTROLPASS```|\n|```PMA_HTPASSWD_USERNAME```|```PMA_HTPASSWD_PASSWORD```|```SSL_SNIPPET```|\n\n\u003ctable\u003e\u003cthead\u003e\n  \u003ctr\u003e\n    \u003cth\u003eVariable \u003c/th\u003e\n    \u003cth colspan=\"2\"\u003eValue\u003c/th\u003e\n  \u003c/tr\u003e\u003c/thead\u003e\n\u003ctbody\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003ccode\u003eLOCAL_TIMEZONE\u003c/code\u003e\u003c/td\u003e\n    \u003ctd colspan=\"2\"\u003e\u003ccode\u003e\u003ca href=\"https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List\" rel=\"nofollow\"\u003eto see local timezones\u003c/a\u003e\u003c/code\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003ccode\u003eDIRECTORY_PATH\u003c/code\u003e\u003c/td\u003e\n    \u003ctd colspan=\"2\"\u003e\u003ccode\u003epwd\u003c/code\u003e at command line\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003ccode\u003eDATABASE_IMAGE_NAME\u003c/code\u003e\u003c/td\u003e\n    \u003ctd colspan=\"2\"\u003e\u003ccode\u003emariadb\u003c/code\u003e or \u003ccode\u003emysql\u003c/code\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003ccode\u003eDATABASE_CONT_NAME\u003c/code\u003e\u003c/td\u003e\n    \u003ctd colspan=\"2\"\u003e\u003ccode\u003emariadb\u003c/code\u003e, \u003ccode\u003emysql\u003c/code\u003e or \u003ccode\u003e\u003ca href=\"https://docs.docker.com/reference/compose-file/services/#container_name\" rel=\"nofollow\" alt=\"custom name\"\u003ecustom name\u003c/a\u003e\u003c/code\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd rowspan=\"2\"\u003e\u003ccode\u003eDATABASE_PACKAGE_MANAGER\u003c/code\u003e\u003c/td\u003e\n    \u003ctd\u003emariadb\u003c/td\u003e\n    \u003ctd\u003e\u003ccode\u003eapt-get update \u0026\u0026 apt-get install -y gettext-base\u003c/code\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003emysql\u003c/td\u003e\n    \u003ctd\u003e\u003ccode\u003emicrodnf update -y \u0026\u0026 microdnf install -y gettext\u003c/code\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd rowspan=\"2\"\u003e\u003ccode\u003eDATABASE_ADMIN_COMMANDLINE\u003c/code\u003e\u003c/td\u003e\n    \u003ctd\u003emariadb\u003c/td\u003e\n    \u003ctd\u003e\u003ccode\u003emariadb-admin\u003c/code\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003emysql\u003c/td\u003e\n    \u003ctd\u003e\u003ccode\u003emysqladmin\u003c/code\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd rowspan=\"2\"\u003e\u003ccode\u003eSSL_SNIPPET\u003c/code\u003e\u003c/td\u003e\n    \u003ctd\u003elocalhost\u003c/td\u003e\n    \u003ctd\u003e\u003ccode\u003eecho 'Generated Self-signed SSL Certificate at localhost'\u003c/code\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eremotehost\u003c/td\u003e\n    \u003ctd\u003e\u003ccode\u003ecertbot certonly --webroot --webroot-path /tmp/acme-challenge --rsa-key-size 4096 --non-interactive --agree-tos --no-eff-email --force-renewal --email ${LETSENCRYPT_EMAIL} -d ${DOMAIN_NAME} -d www.${DOMAIN_NAME} -d ${SUBDOMAIN}.${DOMAIN_NAME}\u003c/code\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\n#### Installation\n\nFirstly: will create external volume\n\n```\ndocker volume create --driver local --opt type=none --opt device=${PWD}/certbot --opt o=bind certbot-etc\n```\n\nLocalhost ssl: Generate Self-signed SSL Certificate with guide [mkcert repository](https://github.com/FiloSottile/mkcert).\n\n```\ndocker compose up -d # Starts services in detached mode (in the background)\n```\n\nthen\n\n```\ndocker container restart webserver\t# reloading for webserver ssl configuration\n```\n\nThe containers are now built and running. You should be able to access the EPrints installation with the configured IP in the browser address. `https://DOMAIN_NAME`.\n\nFor convenience you may add a new entry into your hosts file.\n\n### Portainer\n\n```\ndocker compose -f portainer-docker-compose.yml -p portainer up -d \n```\n\nmanage docker with [Portainer](https://www.portainer.io/) is the definitive container management tool for Docker, Docker Swarm with it's highly intuitive GUI and API. \n\nYou can also visit `https://DOMAIN_NAME:9001` to access portainer after starting the containers.\n\n### Usage\n\n#### You could manage docker containers without command line with portainer.\n\n#### Here’s a quick reference of commonly used Docker Compose commands\n\n```\ndocker ps -a # Lists all containers managed by the compose file\n```\n\n```\ndocker compose start # Starts previously stopped containers\n```\n\n```\ndocker compose stop # Stops all running containers\n```\n\n```\ndocker compose down # Stops and removes containers, networks, etc.\n```\n\n```\ndocker compose down -v # Add --volumes to remove volumes explicitly\n```\n\n```\ndocker rm -f $(docker ps -a -q) # Removes portainer and the other containers\n```\n\n```\ndocker volume rm $(docker volume ls -q) # Removes all volumes\n```\n\n```\ndocker network prune # Remove all unused networks\n```\n\n```\ndocker system prune # Removes unused data (containers, networks, images, and optionally volumes)\n```\n\n```\ndocker system prune -a # Removes all unused images, not just dangling ones\n```\n\n```\ndocker rmi $(docker image ls -q) # Removes portainer and the other images\n```\n\n```\ndocker container logs container_name_or_id # Shows logs from all services\n```\n\n#### Project from existing source\n\nCopy all files into a new directory:\n\n```\ndocker compose up -d # Starts services in detached mode (in the background)\n```\n\n#### docker compose reference\n\n[https://docs.docker.com/reference/cli/docker/compose/](https://docs.docker.com/reference/cli/docker/compose/)\n\n#### EPrints\n\nYou should see the \"Welcome to ...\" page in your browser. If not, please check if your [EPrints configurations](https://wiki.eprints.org/w/Main_Page).\n\n```\nhttps://archive_id.DOMAIN_NAME\n```\n\nLogin Page: |```Username: admin```|```Password: admin123```|\n\nadd and/or remove EPrints site folders and files with any ftp client program in ```./eprints``` folder.\n\u003cbr /\u003eYou can also visit `https://subdomain.DOMAIN_NAME` to access EPrints after starting the containers.\n\n#### Website\n\nYou should see the \"Hello, World!\" page in your browser. If not, please check if your PERL installation satisfies requirements.\n\n```\nhttps://DOMAIN_NAME\n```\n\nadd and/or remove website site folders and files with any ftp client program in ```./website``` folder.\n\u003cbr /\u003eYou can also visit `https://DOMAIN_NAME` to access website after starting the containers.\n\n#### Webserver\n\nadd or remove code in the ```./webserver/conf/extra/httpd-ssl.conf.template``` file for custom apache2/httpd configurations then restart container webserver\n\n[https://httpd.apache.org/docs/2.4/](https://httpd.apache.org/docs/2.4/)\n\n#### phpMyAdmin\n\nYou can add your own custom config.inc.php settings (such as Configuration Storage setup) by creating a file named config.user.inc.php with the various user defined settings in it, and then linking it into the container using:\n\n```\n./phpmyadmin/config.user.inc.php\n```\n\nYou can also visit `https://DOMAIN_NAME:9090` to access phpMyAdmin after starting the containers.\n\nThe first authorize screen(htpasswd;username or password) and phpmyadmin login screen the username and the password is the same as supplied in the `.env` file.\n\n#### backup\n\nThis will back up the all files and folders in database/dump sql and html volumes, once per day, and write it to ```./backups``` with a filename like backup-2023-01-01T10-18-00.tar.gz\n\n##### can run on a custom cron schedule\n\n```BACKUP_CRON_EXPRESSION: '20 01 * * *'``` the UTC timezone.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdamalis%2Ffull-stack-apache2-eprints-for-everyone-with-docker-compose","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdamalis%2Ffull-stack-apache2-eprints-for-everyone-with-docker-compose","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdamalis%2Ffull-stack-apache2-eprints-for-everyone-with-docker-compose/lists"}