Установка Lemmy на Ubuntu 22.04 — пошаговое руководство
Lemmy — открытая платформа-агрегатор в стиле Reddit для федеративной сети (fediverse). В этом руководстве вы по шагам установите Lemmy на сервер с Ubuntu 22.04: настроите ufw, Docker и Docker Compose, скачаете файлы, настроите PostgreSQL и pictrs, поднимете контейнеры, настроите Nginx и SSL через Certbot, а также получите инструкции по обновлению, бэкапу и восстановлению. В конце — проверенные рекомендации по безопасности, отладке и альтернативные подходы.

Lemmy — это открытый аналог Reddit с поддержкой ActivityPub (взаимодействует с Mastodon, Pleroma, Peertube и др.). Вы можете использовать публичные инстансы или запустить собственный сервер для друзей и сообщества. Руководство рассчитано на Ubuntu 22.04 и покрывает базовую установку, настройку HTTPS и операции по обслуживанию.
Важно: перед началом имейте FQDN (например example.com), пользователя с sudo (не root) и доступ к консоли сервера.
Что потребуется
- Сервер с Ubuntu 22.04.
- Ненулевой sudo-пользователь.
- Полное доменное имя (FQDN), например example.com.
- Обновлённая система. Выполните:
$ sudo apt update
$ sudo apt upgrade- Небольшой набор пакетов (могут быть уже установлены):
$ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -yПримечание: если вы используете нестандартную среду (например облачный образ со строгими правилами сети), проверьте разрешения исходящих соединений и политики провайдера.
Важные понятия (1‑строчная дефиниция)
- Docker: контейнеризация приложений.
- Docker Compose: менеджер многоконтейнерных приложений через docker compose файлы.
- pictrs: сервис для хранения изображений, используемый Lemmy.
- Certbot: инструмент получения бесплатных SSL-сертификатов Let’s Encrypt.
Шаг 1 — настройка брандмауэра (ufw)
Ubuntu поставляется с ufw (Uncomplicated Firewall). Убедитесь, что не заблокируете SSH при включении.
Проверить статус:
$ sudo ufw statusПример вывода:
Status: inactiveРазрешите SSH:
$ sudo ufw allow OpenSSHРазрешите HTTP и HTTPS:
$ sudo ufw allow http
$ sudo ufw allow httpsВключите ufw:
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startupПроверьте статус снова:
$ sudo ufw statusОжидаемый вывод (пример):
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)Важно: если вы используете нестандартный SSH-порт — разрешите именно его.
Шаг 2 — установка Docker и Docker Compose
Ubuntu 22.04 может включать старую версию Docker. Установим актуальную официальную сборку.
Импорт ключа Docker:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpgСоздайте файл репозитория Docker:
$ echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullОбновите кеш пакетов и установите Docker:
$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginПроверьте статус службы Docker:
$ sudo systemctl status docker
? docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2023-08-04 07:48:20 UTC; 4min 29s ago
TriggeredBy: ? docker.socket
Docs: https://docs.docker.com
Main PID: 2372 (dockerd)
Tasks: 8
Memory: 23.9M
CPU: 295ms
CGroup: /system.slice/docker.service
??2372 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sockЕсли вы не хотите использовать sudo перед каждой командой docker, добавьте пользователя в группу docker:
$ sudo usermod -aG docker $(whoami)Потом разлогиньтесь и зайдите снова или выполните:
$ su - ${USER}Проверьте группы:
$ groups
navjot wheel dockerПримечание: добавление в группу docker даёт широкие права — относитесь к этому как к эквиваленту управления контейнерами от имени root и применяйте только для доверенных пользователей.
Шаг 3 — создание рабочей директории и загрузка файлов Lemmy
Создайте папку для проекта и переключитесь в неё:
$ mkdir ~/lemmy
$ cd ~/lemmyСкачайте кастомный nginx-шаблон для работы с Docker:
$ wget https://raw.githubusercontent.com/LemmyNet/lemmy-ansible/main/templates/nginx_internal.confСкачайте docker-compose.yml:
$ wget https://raw.githubusercontent.com/LemmyNet/lemmy-ansible/main/templates/docker-compose.ymlСоздайте папку для pictrs и задайте права:
$ mkdir -p volumes/pict-rs
$ sudo chown -R 991:991 volumes/pict-rsПримечание: UID 991 — это рекомендуемый пользователь pictrs внутри контейнера; сохраняйте эту настройку для корректной работы.
Шаг 4 — настройка файлов Lemmy
Откройте docker-compose.yml для редактирования:
$ nano docker-compose.ymlВнесите изменения согласно инструкции (замены переменных в файле):
- Замените {{ lemmy_port }} на 8536.
- Замените {{ lemmy_docker_image }} на dessalines/lemmy:0.18.3 (или актуальную версию — смотрите Docker Hub или релизы GitHub).
- Замените {{ lemmy_docker_ui_image }} на dessalines/lemmy-ui:0.18.3 (версия UI должна соответствовать версии Lemmy).
- Сгенерируйте API-ключ для pict-rs:
$ openssl rand -base64 32
lRLcaM5rovxzmztlDvtkGijJyBtg4KlEKC6HRb3dn7s=Замените значение PICTRS__API_KEY (если там указан {{ postgres_password }}) на сгенерированный ключ.
- Замените {{ domain }} на ваш FQDN (example.com).
- Задайте надёжный пароль для PostgreSQL вместо {{ postgres_password }}.
- Обновите переменные окружения RUST_LOG и добавьте RUST_BACKTRACE=full, например:
- RUST_LOG="warn,lemmy_server=debug,lemmy_api=debug,lemmy_api_common=debug,lemmy_api_crud=debug,lemmy_apub=debug,lemmy_db_schema=debug,lemmy_db_views=debug,lemmy_db_views_actor=debug,lemmy_db_views_moderator=debug,lemmy_routes=debug,lemmy_utils=debug,lemmy_websocket=debug"
- RUST_BACKTRACE=full- Добавьте секцию command/ports под PostgreSQL, чтобы настроить preload и перенаправление порта хоста 5433 на контейнер 5432 (чтобы избежать конфликтов с локальной БД):
command:
[
"postgres",
"-c",
"session_preload_libraries=auto_explain",
"-c",
"auto_explain.log_min_duration=5ms",
"-c",
"auto_explain.log_analyze=true",
"-c",
"track_activity_query_size=1048576",
]
ports:
# use a different port so it doesnt conflict with potential postgres db running on the host
- "5433:5432"Сохраните файл (Ctrl+X, Y).
Далее создайте файл конфигурации lemmy.hjson:
$ nano lemmy.hjsonВставьте примерный конфиг (замените пароли, домен и ключ pictrs на свои значения):
{
# for more info about the config, check out the documentation
# https://join-lemmy.org/docs/en/administration/configuration.html
database: {
host: "postgres"
user: "lemmy"
password: "yourpsqlpassword"
database: "lemmy"
port: 5432
}
hostname: "example.com"
pictrs: {
url: "http://pictrs:8080/"
# Set a custom pictrs API key. ( Required for deleting images )
api_key: "lRLcaM5rovxzmztlDvtkGijJyBtg4KlEKC6HRb3dn7s="
}
email: {
smtp_server: "email-smtp.us-west-2.amazonaws.com:465"
smtp_login: "AmazonSESUserID"
smtp_password:"AmazonSESPassword"
smtp_from_address: "[email protected]"
# Whether or not smtp connections should use tls. Can be none, tls, or starttls
tls_type: "tls"
}
setup: {
# Username for the admin user
admin_username: "admin"
# Password for the admin user. It must be at least 10 characters.
admin_password: "tf6HHDS4RolWfFhk4Rq9"
# Name of the site (can be changed later)
site_name: "Howtoforge Lemmy"
# Email for the admin user (optional, can be omitted and set later through the website)
admin_email: "[email protected]"
}
}Сохраните файл (Ctrl+X, Y).
Оптимизация PostgreSQL
Для базы данных удобно сгенерировать параметры с помощью PGTune. Перейдите на сайт PGTune, введите характеристики сервера и нажмите Generate.

Скопируйте результат и создайте файл customPostgresql.conf:
$ nano customPostgresql.confПример содержимого (получен из PGTune на конкретную конфигурацию):
# DB Version: 15
# OS Type: linux
# DB Type: web
# Total Memory (RAM): 2 GB
# CPUs num: 2
# Connections num: 100
# Data Storage: ssd
max_connections = 100
shared_buffers = 512MB
effective_cache_size = 1536MB
maintenance_work_mem = 128MB
checkpoint_completion_target = 0.9
wal_buffers = 16MB
default_statistics_target = 100
random_page_cost = 1.1
effective_io_concurrency = 200
work_mem = 2621kB
min_wal_size = 1GB
max_wal_size = 4GBСохраните файл.
Шаг 5 — запуск Lemmy (Docker Compose)
Когда файлы готовы, запустите контейнеры:
$ docker compose up -dПроверьте список процессов Docker:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
75443bb3db3e nginx:1-alpine "/docker-entrypoint.…" 32 seconds ago Up 29 seconds 80/tcp, 0.0.0.0:8536->8536/tcp, :::8536->8536/tcp lemmy-proxy-1
8393c8d625af dessalines/lemmy-ui:0.18.1 "docker-entrypoint.s…" 32 seconds ago Up 30 seconds 1234/tcp lemmy-lemmy-ui-1
ea743c8279f7 dessalines/lemmy:0.18.1 "/app/lemmy" 32 seconds ago Up 26 seconds lemmy-lemmy-1
78855ae7871e postgres:15-alpine "docker-entrypoint.s…" 33 seconds ago Up 31 seconds 5432/tcp lemmy-postgres-1
9556b57afdb9 asonix/pictrs:0.4.0 "/sbin/tini -- /usr/…" 33 seconds ago Up 31 seconds 6669/tcp, 8080/tcp lemmy-pictrs-1Или с помощью docker compose ps:
$ docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
lemmy-lemmy-1 dessalines/lemmy:0.18.1 "/app/lemmy" lemmy About a minute ago Up About a minute
lemmy-lemmy-ui-1 dessalines/lemmy-ui:0.18.1 "docker-entrypoint.s…" lemmy-ui About a minute ago Up About a minute 1234/tcp
lemmy-pictrs-1 asonix/pictrs:0.4.0 "/sbin/tini -- /usr/…" pictrs About a minute ago Up About a minute 6669/tcp, 8080/tcp
lemmy-postgres-1 postgres:15-alpine "docker-entrypoint.s…" postgres About a minute ago Up About a minute 5432/tcp
lemmy-proxy-1 nginx:1-alpine "/docker-entrypoint.…" proxy About a minute ago Up About a minute 80/tcp, 0.0.0.0:8536->8536/tcp, :::8536->8536/tcpПроверьте в браузере http://
Шаг 6 — установка Nginx
Для проксирования и HTTPS используем Nginx. Установим стабильную версию из официального репозитория.
Импорт ключа:
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/nullДобавьте репозиторий:
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.listУстановите Nginx:
$ sudo apt update
$ sudo apt install nginxПроверьте версию и запустите сервис:
$ nginx -v
nginx version: nginx/1.24.0
$ sudo systemctl start nginx
$ sudo systemctl status nginxШаг 7 — SSL через Certbot (Let’s Encrypt)
Мы установим Certbot через snap (актуальная версия).
Обновите snap core:
$ sudo snap install core && sudo snap refresh coreУстановите Certbot:
$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbotЗапросите сертификат (замените e‑mail и домен):
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d example.comСертификат окажется в /etc/letsencrypt/live/example.com.
Сгенерируйте Diffie-Hellman параметры:
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096Проверьте расписание обновлений snap.certbot.renew.timer:
$ sudo systemctl list-timersТестовый прогон автообновления:
$ sudo certbot renew --dry-runЕсли ошибок нет — автоматическое обновление сертификата настроено.
Шаг 8 — конфигурация Nginx для Lemmy
Создайте файл /etc/nginx/conf.d/lemmy.conf:
$ sudo nano /etc/nginx/conf.d/lemmy.confВставьте конфигурацию (замените example.com на ваш домен):
limit_req_zone $binary_remote_addr zone=example.com_ratelimit:10m rate=1r/s;
server {
listen 80;
listen [::]:80;
server_name example.com;
# Hide nginx version
server_tokens off;
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;
access_log /var/log/nginx/lemmy.access.log;
error_log /var/log/nginx/lemmy.error.log;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;
ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
# use https://blog.cloudflare.com/announcing-1111 Cloudfare+Apnic labs, It is free and secure
resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] valid=300s;
# Hide nginx version
server_tokens off;
# Enable compression for JS/CSS/HTML bundle, for improved client load times.
# It might be nice to compress JSON, but leaving that out to protect against potential
# compression+encryption information leak attacks like BREACH.
gzip on;
gzip_types text/css application/javascript image/svg+xml;
gzip_vary on;
# Various content security headers
add_header Referrer-Policy "same-origin";
add_header X-Content-Type-Options "nosniff";
add_header X-Frame-Options "DENY";
add_header X-XSS-Protection "1; mode=block";
location / {
proxy_pass http://localhost:8536;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}Обратите внимание — root директория публичных файлов Lemmy: /var/www/html/Lemmy/public/ (если понадобится менять).
Добавьте в /etc/nginx/nginx.conf строку перед включением конфигураций:
server_names_hash_bucket_size 64;Проверьте синтаксис и перезапустите Nginx:
$ sudo nginx -t
$ sudo systemctl restart nginxШаг 9 — доступ к Lemmy
Откройте https://example.com — вы должны увидеть домашнюю страницу Lemmy.

Нажмите Login, введите учётные данные, заданные в lemmy.hjson (admin_username/admin_password), и войдите.

После входа вы попадёте на главный экран как администратор.

Шаг 10 — обновление Lemmy
Обновление выполняется путём изменения версий в docker-compose.yml и перезапуска контейнеров.
$ cd ~/lemmy
$ nano docker-compose.ymlИзмените версии образов (lemmy, lemmy-ui, pictrs), сохраните и выполните:
$ docker compose down --remove-orphan
$ docker compose up -dПроверяйте совместимость версий Lemmy и UI — несовпадение может вызывать ошибки.
Шаг 11 — бэкап и восстановление Lemmy
Резервное копирование состоит из дампа базы и копии volumes/.
Создание дампа БД:
$ cd ~/lemmy
$ docker compose exec postgres pg_dumpall -c -U lemmy | gzip > lemmy_dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql.gzРезервирование volumes:
$ sudo rsync -avP volumes ~/backup/lemmyПример скрипта для удалённого создания бэкапа (локально запускаете скрипт, он подключается по SSH и сохраняет дамп):
#!/bin/sh
# DB Backup
ssh USERNAME@SERVER_IP "docker-compose exec postgres pg_dumpall -c -U lemmy" | gzip > ~/BACKUP_LOCATION/INSTANCE_NAME_dump_`date +%Y-%m-%d"_"%H_%M_%S`.sql.gz
# Volumes folder Backup
rsync -avP -zz --rsync-path="sudo rsync" USERNAME@SERVER_IP:/LEMMY_LOCATION/volumes ~/BACKUP_LOCATION/FOLDERNAMEВосстановление базы на новой установке:
# Start only the PostgreSQL container first
$ docker compose up -d postgres
# Restore from the .sql.gz backup
$ gunzip < db_dump.sql | docker-compose exec -T postgres psql -U lemmy
# Note: You may need to change the permissions on the postgres directory, depending on your system.
$ chown -R $USER volumes
$ docker compose restart postgres
# Continue with the startup
$ docker compose up -dЕсли вы случайно уже запустили Lemmy и база заполнена, можно очистить схему public и затем восстановить:
# Drop the existing DB
docker exec -i FOLDERNAME-postgres-1 psql -U lemmy -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;"
# This also might be necessary when doing a db import with a different password.
docker exec -i FOLDERNAME-postgres-1 psql -U lemmy -c "alter user lemmy with password 'bleh'"Итоги
Вы установили и настроили Lemmy на Ubuntu 22.04, подняли контейнеры, настроили Nginx и HTTPS, и узнали, как делать бэкапы, обновлять и восстанавливать систему.
Важно: храните пароли и API‑ключи в защищённом месте и применяйте обновления безопасности.
Дополнения и советы администраторам (ценные практики)
Краткая таблица ключевых портов и файлов
- HTTP: 80
- HTTPS: 443
- Проксируемый порт Lemmy в примере: 8536
- PostgreSQL внутри контейнера: 5432 (внешне сопоставлен с 5433 в примере)
- Каталог проекта: ~/lemmy
- Важные файлы: docker-compose.yml, lemmy.hjson, customPostgresql.conf
Рекомендации по ресурсам
Минимальные требования зависят от нагрузки. Для небольшой приватной инстанции под сообщество из нескольких десятков активных пользователей подойдёт VPS с 2 ядрами и 2–4 ГБ ОЗУ. Для публичной или растущей инстанции планируйте больше CPU и RAM, а также быстрые SSD.
(Не указываем конкретных гарантий производительности — планирование зависит от трафика и поведения пользователей.)
Быстрый чеклист администратора (роль‑ориентированный)
Для администратора при первой установке:
- Убедиться, что DNS A/AAAA указывает на сервер.
- Проверить, что ufw разрешает SSH/HTTP/HTTPS.
- Задать надёжные пароли для PostgreSQL и администратора Lemmy.
- Сгенерировать и сохранить ключ PICTRS__API_KEY.
- Установить Certbot и получить сертификат.
- Настроить автоматические бэкапы и проверку восстановления (restore test).
Для мониторинга и обслуживания:
- Настроить логирование и хранение логов (rotate).
- Проверять доступность контейнеров (docker ps / docker compose ps).
- Регулярно обновлять образы и проверять совместимость версий.
- Тестировать certbot renew –dry-run.
Быстрые сценарии отладки (когда что-то не работает)
Ничего не доступно по HTTPS:
- Проверить, запущен ли Nginx: sudo systemctl status nginx
- Проверить доступность контейнера proxy: docker ps | grep proxy
- Просмотреть логи Nginx: sudo tail -n 200 /var/log/nginx/lemmy.error.log
- Проверить наличие сертификатов в /etc/letsencrypt/live/
Ошибки соединения с базой:
- Убедиться, что контейнер postgres запущен.
- Проверить переменные в lemmy.hjson (host, user, password).
- Проверить, не занят ли порт 5432 на хосте; если да — используйте внешний сопоставленный порт (5433).
Изображения не загружаются/нельзя удалить:
- Проверить работу сервиса pictrs (docker logs lemmy-pictrs-1).
- Убедиться, что PICTRS__API_KEY в docker-compose.yml совпадает с api_key в lemmy.hjson.
UI не загружается или пустая страница:
- Проверить контейнер lemmy-lemmy-ui и его логи.
- Проверить соответствие версий UI и сервера Lemmy.
Альтернативные подходы установки
- Ansible-плейбук от официального проекта Lemmy (подходит для автоматизированных развёртываний и обновлений).
- Установка из исходников (не рекомендуется для новичков — требует управления зависимостями Rust и окружением).
- Использование управляемых хостингов или готовых образов (например в облаке) — быстрее, но менее гибко.
Практики безопасности
- Храните секреты вне репозитория (например, используйте vault или переменные окружения на хосте).
- Отключайте доступ к PostgreSQL снаружи (используйте сетевые политики Docker или только локальный доступ через Unix-сокеты/прокси).
- Настройте регулярные обновления безопасности для хоста и контейнеров.
- Ограничьте доступ к административным интерфейсам (включая доступ к порту 8536) через firewall или IP‑белые списки.
- Регулярно проверяйте логи на аномалии.
Бэкап‑плейбук (микро‑SOP)
- Остановить критичные задачи на время бэкапа (по необходимости).
- Сделать дамп всех баз: pg_dumpall (см. команду выше).
- Синхронизировать volumes с удалённым хранилищем (rsync/s3).
- Проверить целостность файлов (gzip -t для архивов).
- Тестовое восстановление на отдельной машине минимум раз в квартал.
Критерии приёмки установки
- По HTTPS открывается главная страница Lemmy для домена.
- Можно войти под admin и увидеть панель управления.
- Загружаются изображения (pictrs), и удаление изображений работает с API‑ключом.
- Certbot успешно проходит dry-run для автоматического обновления.
- Создан и проверен хотя бы один бэкап и выполнено тестовое восстановление.
Короткая галерея крайних случаев
- Если у вас уже запущен PostgreSQL на хосте (порт 5432), измените сопоставление портов контейнера на 5433:5432 и обновите lemmy.hjson.
- Если Let’s Encrypt ограничивает выдачу (rate limits), используйте тестовый сервер ACME при проверках и планируйте запросы осторожно.
Однострочные определения (глоссарий)
- FQDN — полное доменное имя (например example.com).
- PICTRS — сервис хранения изображений для Lemmy.
- Certbot — клиент Let’s Encrypt для получения SSL‑сертификатов.
Сводка: храните конфигурации и секреты в безопасном месте, автоматизируйте бэкапы и тесты восстановления, регулярно обновляйте образы и контролируйте доступ по сети.
Похожие материалы
Как сохранить маршрут Google Maps на ПК
Голосовой ввод на Chromebook — как включить
Как создать и управлять рабочим пространством Slack
Image Clipper в Samsung Gallery: как вырезать объект
Как быстро включить фонарик на Android