Как установить сервер EteSync на Ubuntu 20.04
На этой странице
- Предпосылки
- Начало работы
- Установка сервера MariaDB
- Установка и настройка EteSync
- Создание файла модуля Systemd для EteSync
- Настройка Apache в качестве обратного прокси-сервера
- Доступ к консоли администратора EteSync
- Защитите EteSync с помощью Lets Encrypt SSL
- Заключение
EteSync — это решение с открытым исходным кодом для синхронизации ваших контактов, календарей и задач. Он размещается самостоятельно, обеспечивает сквозное шифрование и позволяет обмениваться данными с другими пользователями. Его можно интегрировать с рабочими столами GNOME и KDE. Доступ к нему можно получить через настольные, веб-клиенты, клиенты Android и iOS.
В этом руководстве я покажу вам, как установить EteSync с Apache на Ubuntu 20.04.
Предпосылки
- Сервер под управлением Ubuntu 20.04.
- Действительное доменное имя, указанное с IP-адресом вашего сервера.
- На сервере настроен пароль root.
Начиная
Сначала обновите системные пакеты до обновленной версии, выполнив следующую команду:
apt-get update -y
Как только все пакеты будут обновлены, вы можете перейти к следующему шагу.
Установка сервера MariaDB
По умолчанию EteSync использует базу данных SQLite для хранения своей информации. Здесь мы установим и будем использовать MariaDB в качестве серверной части базы данных.
Сначала установите необходимые зависимости с помощью следующей команды:
apt-get install software-properties-common gnupg2 -y
Затем добавьте GPG-ключ и репозиторий MariaDB с помощью следующей команды:
apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirror.lstn.net/mariadb/repo/10.5/ubuntu focal main'
Затем обновите репозиторий MariaDB и установите последнюю версию MariaDB с помощью следующей команды:
apt-get install mariadb-server -y
После установки сервера MariaDB войдите в оболочку MariaDB с помощью следующей команды:
mysql
После входа в систему создайте базу данных и пользователя для EteSync с помощью следующей команды:
MariaDB [(none)]> create database etesync;
MariaDB [(none)]> create user identified by 'securepassword';
Затем предоставьте все привилегии базе данных EteSync с помощью следующей команды:
MariaDB [(none)]> grant all privileges on etesync.* to ;
Затем сбросьте привилегии и выйдите из MariaDB с помощью следующей команды:
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;
Как только вы закончите, вы можете перейти к следующему шагу.
Установка и настройка EteSync
Во-первых, вам нужно будет установить некоторые зависимости Python, необходимые для EteSync. Вы можете установить их все с помощью следующей команды:
apt-get install python3-virtualenv python3-pip gcc libmysqlclient-dev build-essential git -y
После установки всех зависимостей загрузите последнюю версию EteSync с помощью следующей команды:
git clone https://github.com/etesync/server.git etesync
После завершения загрузки измените каталог на etesync и создайте виртуальную среду Python с помощью следующей команды:
cd etesync
virtualenv -p python3 .venv
Затем активируйте виртуальную среду с помощью следующей команды:
source .venv/bin/activate
Затем установите все требования с помощью следующей команды:
pip install -r requirements.txt
Затем скопируйте пример файла конфигурации:
cp etebase-server.ini.example etebase-server.ini
Затем отредактируйте файл конфигурации с помощью команды ниже:
nano etebase-server.ini
Добавьте или измените следующие строки в соответствии с вашей конфигурацией:
media_root = /opt allowed_host1 = etesync.example.com ;engine = django.db.backends.sqlite3 ;name = db.sqlite3 engine = django.db.backends.mysql name = etesync user = etesync password = securepassword host = 127.0.0.1 port = 3306
Сохраните и закройте файл, затем установите другие модули с помощью следующей команды:
pip3 install daphne
pip3 install mysqlclient
pip3 install aioredis
Затем создайте статические файлы и перенесите базу данных с помощью следующей команды:
./manage.py collectstatic
./manage.py migrate
Наконец, запустите сервер EteSync с помощью следующей команды:
daphne -b 0.0.0.0 -p 8001 etebase_server.asgi:application
Если все в порядке, вы должны получить следующий вывод:
2021-07-09 05:42:28,510 INFO Starting server at tcp:port=8001:interface=0.0.0.0 2021-07-09 05:42:28,510 INFO HTTP/2 support not enabled (install the http2 and tls Twisted extras) 2021-07-09 05:42:28,511 INFO Configuring endpoint tcp:port=8001:interface=0.0.0.0 2021-07-09 05:42:28,512 INFO Listening on TCP address 0.0.0.0:8001
Нажмите CTRL + C, чтобы остановить сервер.
Затем создайте пользователя с правами администратора с помощью следующей команды:
./manage.py createsuperuser
Укажите свое имя пользователя, пароль и адрес электронной почты, как показано ниже:
Username: etesync Email address: Password: Password (again): Superuser created successfully.
Затем деактивируйте из виртуальной среды Python с помощью следующей команды:
deactivate
Создайте файл модуля Systemd для EteSync
Далее вам нужно будет создать юнит-файл systemd для управления EteSync. Вы можете создать его с помощью следующей команды:
nano /etc/systemd/system/etesync.service
Добавьте следующие строки:
[Unit] Description=EteSync: End-to-End Encryption to Sync Calender, Contacts, Tasks and Notes. [Service] WorkingDirectory=/root/etesync ExecStart=/root/etesync/.venv/bin/daphne -b 127.0.0.1 -p 8001 -u /tmp/etebase_server.sock etebase_server.asgi:application User=root Group=root Restart=always RestartSec=5s [Install] WantedBy=multi-user.target
Сохраните и закройте файл, затем перезагрузите демон systemd, чтобы применить изменения конфигурации:
systemctl daemon-reload
Затем запустите и включите службу EteSync с помощью следующей команды:
systemctl start etesync
systemctl enable etesync
Чтобы проверить статус службы EteSync, выполните следующую команду:
systemctl status etesync
Вы получите следующий вывод:
? etesync.service - EteSync: End-to-End Encryption to Sync Calender, Contacts, Tasks and Notes. Loaded: loaded (/etc/systemd/system/etesync.service; disabled; vendor preset: enabled) Active: active (running) since Fri 2021-07-09 05:45:45 UTC; 5s ago Main PID: 16213 (daphne) Tasks: 1 (limit: 2353) Memory: 48.7M CGroup: /system.slice/etesync.service ??16213 /root/etesync/.venv/bin/python /root/etesync/.venv/bin/daphne -b 127.0.0.1 -p 8001 -u /tmp/etebase_server.sock etebase_se> Jul 09 05:45:45 node1 systemd[1]: Started EteSync: End-to-End Encryption to Sync Calender, Contacts, Tasks and Notes.. Jul 09 05:45:46 node1 daphne[16213]: 2021-07-09 05:45:46,993 INFO Starting server at tcp:port=8001:interface=127.0.0.1, unix:/tmp/etebase_> Jul 09 05:45:46 node1 daphne[16213]: 2021-07-09 05:45:46,995 INFO HTTP/2 support not enabled (install the http2 and tls Twisted extras) Jul 09 05:45:46 node1 daphne[16213]: 2021-07-09 05:45:46,995 INFO Configuring endpoint tcp:port=8001:interface=127.0.0.1 Jul 09 05:45:46 node1 daphne[16213]: 2021-07-09 05:45:46,997 INFO Listening on TCP address 127.0.0.1:8001 Jul 09 05:45:46 node1 daphne[16213]: 2021-07-09 05:45:46,998 INFO Configuring endpoint unix:/tmp/etebase_server.sock
На этом этапе EteSync запущен и прослушивает порт 8001. Теперь вы можете перейти к следующему шагу.
Настройка Apache в качестве обратного прокси
Также рекомендуется установить и использовать Apache в качестве обратного прокси-сервера для доступа к EteSync. Сначала установите сервер Apache с помощью следующей команды:
apt-get install apache2 -y
После установки сервера Apache включите все прокси-модули с помощью следующей команды:
a2enmod proxy proxy_http headers proxy_wstunnel
Затем создайте новый файл конфигурации виртуального хоста Apache:
nano /etc/apache2/sites-available/etesync.conf
Добавьте следующие строки:
<VirtualHost *:80> ServerName etesync.example.com ErrorDocument 404 /404.html ErrorLog ${APACHE_LOG_DIR}/etebase_error.log CustomLog ${APACHE_LOG_DIR}/etebase_access.log combined ProxyPreserveHost On ProxyPass / http://127.0.0.1:8001/ ProxyPassReverse / http://127.0.0.1:8001/ Alias /static /etesync/static </VirtualHost>
Сохраните и закройте файл, затем активируйте виртуальный хост Apache с помощью следующей команды:
a2ensite etesync.conf
Затем перезапустите Apache, чтобы обновить изменения:
systemctl restart apache2
Теперь вы можете проверить статус Apache с помощью следующей команды:
systemctl status apache2
Вы должны получить следующий результат:
? apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2021-07-09 05:50:26 UTC; 5s ago Docs: https://httpd.apache.org/docs/2.4/ Process: 17551 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS) Main PID: 17567 (apache2) Tasks: 55 (limit: 2353) Memory: 5.3M CGroup: /system.slice/apache2.service ??17567 /usr/sbin/apache2 -k start ??17568 /usr/sbin/apache2 -k start ??17569 /usr/sbin/apache2 -k start Jul 09 05:50:26 node1 systemd[1]: Starting The Apache HTTP Server... Jul 09 05:50:26 node1 apachectl[17558]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 45.58.3>
Доступ к консоли администратора EteSync
Теперь откройте веб-браузер и войдите в интерфейс администрирования EteSync, используя URL-адрес http://etesync.example.com/admin/. Вы будете перенаправлены на следующую страницу:
Укажите имя пользователя и пароль администратора и нажмите кнопку «Войти». Вы должны увидеть следующую страницу:
Безопасный EteSync с Lets Encrypt SSL
Во-первых, вам нужно будет установить клиент Certbot Lets Encrypt, чтобы загрузить и установить сертификат SSL для вашего домена.
Вы можете установить его с помощью следующей команды:
apt-get install python3-certbot-apache -y
После установки вы можете запустить следующую команду, чтобы установить сертификат Lets Encrypt для вашего домена etesync.example.com.
certbot --apache -d etesync.example.com
Во время установки вам будет предложено указать свой адрес электронной почты и принять условия обслуживания, как показано ниже:
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator apache, Installer apache Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y Obtaining a new certificate Performing the following challenges: http-01 challenge for etesync.example.com Enabled Apache rewrite module Waiting for verification... Cleaning up challenges Created an SSL vhost at /etc/apache2/sites-available/etesync-le-ssl.conf Deploying Certificate to VirtualHost /etc/apache2/sites-available/etesync-le-ssl.conf Enabling available site: /etc/apache2/sites-available/etesync-le-ssl.conf Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Затем введите 2 и нажмите Enter, чтобы загрузить и установить бесплатный SSL-сертификат для вашего домена. После успешного завершения установки. Вы должны получить следующий результат:
Enabled Apache rewrite module Redirecting vhost in /etc/apache2/sites-enabled/etesync.conf to ssl vhost in /etc/apache2/sites-available/ etesync-le-ssl.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://etesync.example.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=etesync.example.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Заключение
Поздравляем! вы успешно установили EteSync на сервер Ubuntu 20.04 с Lets Encrypt SSL. Теперь вы можете легко синхронизировать свой календарь и контактировать с EteSync.