- Use Docker Compose to set up a fully functional Hubzilla instance with just a few commands.
- Multi-arch prebuilt images available for amd64, arm64, arm/v7.
- Continuous Updates: The Docker image is built to allow for easy updates whenever new changes are made to the Hubzilla core or its dependencies.
- SMTP Integration: Built-in support for sending emails using ssmtp, making it easy to configure email notifications for your Hubzilla instance.
To get started with the project, simply follow these steps below.
- Clone the Repository:
git clone https://github.com/saiwal/hubzilla-docker.git
cd hubzilla-docker
- Configure Your Environment: Update the
.env
file with your SMTP and database details. - Run the Container:
docker compose up -d
Replace the following
image: ghcr.io/saiwal/hubzilla-docker:latest
with:
build:
context: .
dockerfile: Dockerfile
args: # Pass build arguments here
SSMTP_ROOT: ${SSMTP_ROOT}
SSMTP_MAILHUB: ${SSMTP_MAILHUB}
SSMTP_AUTHUSER: ${SSMTP_AUTHUSER}
SSMTP_AUTHPASS: ${SSMTP_AUTHPASS}
SSMTP_USESTARTTLS: ${SSMTP_USESTARTTLS}
SSMTP_FROMLINEOVERRIDE: ${SSMTP_FROMLINEOVERRIDE}
REVALIASES_ROOT: ${REVALIASES_ROOT}
REVALIASES_WWWDATA: ${REVALIASES_WWWDATA}
image: hubzilla
- Build and Run the Container:
docker compose up -d
or the following if you need a clean rebuild:
docker build --no-cache -t hubzilla -f Dockerfile .
docker compose up -d
Access Your Hubzilla Instance: Navigate to http://localhost (or the appropriate URL) to view your Hubzilla instance.
Simply restart the container and it will pull the latest version of hubzilla from its repository and update addon/theme repositories.
docker compose restart
To edit .htconfig.php
for configuring advanced hubzilla features connect to container using:
docker exec -it <hubzilla_container_name> bash
and use nano
or vim
to edit .htconfig.php
Using Docker for Hubzilla provides several advantages:
- Isolation: Each instance runs in its own container, preventing conflicts with other applications.
- Portability: Easily move your setup between different environments (development, staging, production) with minimal effort.
- Consistency: The same environment can be replicated on any machine that supports Docker, ensuring that "it works on my machine" is no longer a valid excuse.
- Using
http://
instead ofhttps://
in siteurl on initial setup will break federation and discovery. Make sure to use SSL and https. - SMTP environment variables are necessary for admin registration. Make sure they are specified in the
.env
files correctly. Use app passwords if necessary for services with TFA(gmail, etc.). - Upload size limit is controlled by custom-php.ini, currently set to 20MB. Change if needed to appropriate value.
- Optimize image size.
- Option to add custom addon/theme repos.
- Explore other database systems (Postgres, etc.)
- Add option to enable apps, account quotas, and other configuration options.
I welcome any contributions, suggestions, or feedback you might have! If you find any issues or have ideas for new features, please don’t hesitate to reach out or open an issue on the GitHub repository.