Go to file
L3D 944fb8b73e
Merge pull request #36 from roles-ansible/dependabot/github_actions/ansible-actions/yamllint-action-0.0.2
Bump ansible-actions/yamllint-action from 0.0.1 to 0.0.2
2024-03-22 11:23:29 +01:00
.github Merge pull request #36 from roles-ansible/dependabot/github_actions/ansible-actions/yamllint-action-0.0.2 2024-03-22 11:23:29 +01:00
defaults Create optional etebase backup 2022-11-17 01:33:35 +01:00
handlers Setup etebase systemd 2022-11-12 18:32:49 +01:00
meta Update Linting and update meta info 2023-10-12 17:58:25 +02:00
tasks Adding some additional python venv and pip packages 2023-10-30 01:50:26 +01:00
templates Run as user in systemd service 2024-02-12 22:09:22 +01:00
vars Run as user in systemd service 2024-02-12 22:09:22 +01:00
.gitignore Initial commit 2022-11-10 00:20:58 +01:00
.yamllint Initial commit 2022-11-10 00:20:58 +01:00
LICENSE Initial commit 2022-11-10 00:20:58 +01:00
README.md improve linting and cleanup 2023-10-29 14:43:07 +01:00
requirements.yml improve linting and cleanup 2023-10-29 14:43:07 +01:00


Ansible Galaxy MIT License Maintainance

Ansible role EteBase - EteSync 2.0 Server Backend

Ansible role to Setup and Confugure Etebase - The Backend from EteSync 2.0 -> https://github.com/etesync/server.


This Ansible role installs and configures etebase, the backend of etesync. A piece of software to securely sync your contacts, calendars, tasks and notes! In this Ansible role, a separate user is created for etebase. The latest release of etebase is downloaded to the home of this user. A configuration is created. The specified Python dependencies are installed in a venv. And optionally etebase can be started automatically via a systemd service and uvicorn.

This Ansible role does not create users in Etebase. And the configuration for the web server is not created either. More about this in the Additional Information section.

Default Variables

variable value description
etebase__user etebase The Unix User for etebase
etebase__group etebase The Unix Group for etebase
etebase__user_home /var/lib/etebase Etebase User Home
etebase__shell /bin/false Default Shell of Etebase User
etebase__venv_path {{ etebase__user_home }}/venv Etebase venv path
etebase__socket /tmp/etebase_server.sock Etebase Socket path (only if etebase__systemd_setup is set to true)
etebase__package_state present Set to latest to upgrade all etebase required system and pip packages to the latest version
etebase__version latest Etebase Release Tag
etebase__secrets_dir {{ etebase__user_home }}/secrets Path to store etebase secrets
etebase__collectstatic true Generate static files for etebase
etebase__restart_webserver false Set to true to restart the webserver on config change (etebase__systemd_setup needed)
etebase__webserver_service nginx.service Which systemd unit should be restartet for the webserver
etebase__systemd_setup false Set to true to start etebase as systemd unit with the systemd socket configured above
etebase__create_backup false Should this role create a backup before upgrading etebase
etebase__backup_destionation {{ etebase__user_home }}/backup Destination directory for backup
etebase__backup_sqlite true If we do a backup we could skipping the sqlite3 database by flipping this
submodules_versioncheck false should we do a simple version check for this ansible role

Options for etebase-server.ini

variable value description
etebase__global_secret_file {{ etebase__secrets_dir }}/secret.txt path of secret.txt
etebase__global_debug false Set debug to true
etebase__global_static_root {{ etebase__user_home }}/static_root Path of static root
etebase__global_media_root {{ etebase__user_home }}/media_root Path for media
etebase__global_extra Variable for aditional parameter in the [global] section of the config file
etebase__allowed_hosts_allowed_host1 * The allowed Host for this etebase server
etebase__allowed_hosts_extra Variable for aditional parameter in the [allowed_hosts] section of the config file
etebase__database_engine django.db.backends.sqlite3 Databse Engine
etebase__database_name {{ etebase__secrets_dir }}/etebase.db.sqlite3 Path of the sqlite3 database
etebase__database_extra Variable for aditional parametet in the [database] section of the config file
etebase__database_options_extra Variable for aditional parameter in the [database_options] section of the config file
etebase__ldap_extra Variable for aditional parameter in the [ldap] section of the config file
etebase__config_extra Variable for aditional parameter at the end of the config file

Additional Information

You find more information about the webserver config at github.com/etesync/server/wiki/Production-setup-using-Nginx. Please remember the value you used for the etebase__socket variable, if you used this role to start the uvicorn ASGI server via systemd. For this you have to set etebase__systemd_setup to true.

You have to create a admin User by yourself. To do this, log in manually as priviledged user, change to the etebase__user_home. Enter the downloaded etebase code direcotory and run the python3 ./manage.py createsuperuser command in the venv:

# go to etebase home
cd /var/lib/etebase/

# change to latest etebase version
ls -l etebase_*
cd etebase_v0.10.0  # example versiom

# enable latest venv
ls -l /var/lib/etebase/venv
source /var/lib/etebase/venv/v0.10.0/bin/activate  # example version

# create new superuser
python3 ./manage.py createsuperuser

By the way, this role requires that the Ansible user be allowed to execute commands with sudo privileges.

Example Playbook

- name: Install etebase server at example.com
  hosts: example.com
    - {role: do1jlr.etebase, tags: etebase}
    etebase__allowed_hosts_allowed_host1: 'example.com'
    etebase__systemd_setup: true
    submodules_versioncheck: true


The community.general collection is required for some parts of this ansible role. You can install it with this command:

ansible-galaxy collection install -r requirements.yml --upgrade


Don't hesitate to open a issue or (even better) create a pull request.