Официальный сайт: gotosocial.org
CodeBerg: codeberg.org/superseriousbusiness/gotosocial
Документация: docs.gotosocial.org/en/latest/
Repology: repology.org/project/gotosocial/information
Сначала устанавливаем GoToSocial из репозитория:
sudo pacman -S gotosocial
# Проверим:
gotosocial --version
Как обычно делают на серверах (гпт):
pacman -Ql gotosocial | grep template
Теперь нужно создать конфигурационный файл config.yaml. Разместим его в ~/gotosocial/. Пример конфигурационного файла можно взять здесь. Если мы устанавливали пакет из репозитория Arch, то дефолтный конфигурационный файл копируется сюда: /etc/gotosocial/config.yaml.
Файлы сертификата gts.test.pem и gts.test-key.pem я положил в ~/certs/.
Что нужно прописать в конфигурационном файле:
# ~/gotosocial/config.yaml
# 347-я строка (без шаблонов не запустится):
web-template-base-dir: /etc/gotosocial/template # 347-я строка
# 352-я строка:
web-asset-base-dir: "./web/assets/"
# Заменим на, иначе GoToSocial не найдёт themes:
web-asset-base-dir: "/usr/share/gotosocial/"
# Запустить gotosocial через http:
protocol: "http"
tls-certificate-chain: ""
tls-certificate-key: ""
# Если nginx работает через https, то указываем в "protocol" https
# Запустить gotosocial через https:
protocol: "https"
tls-certificate-chain: "/home/mark/certs/gts.test.pem"
tls-certificate-key: "/home/mark/certs/gts.test-key.pem"
# порт и trusted-proxies – по умолчанию:
port: 8080
trusted-proxies:
- "127.0.0.1/32"
- "::1"
host: "localhost"
# меняем на:
host: "gts.test"
db-address: "sqlite.db"
# лучше поменять на:
db-address: "/home/mark/gotosocial/sqlite.db"
# иначе база данных будет создавать в деректории, ...
# ... из которой мы запускаем gotosocial
Запускаем сервер с указанием конфига:
gotosocial --config-path ~/gotosocial/config.yaml server start
Теперь создадим пользователя:
gotosocial --config-path ~/gotosocial/config.yaml \
admin account create \
--username mark \
--email mark@gts.test \
--password 'password'
# Пароль нужно придумать посложней, иначе GoToSocial будет ругаться
И сделаем его админом:
gotosocial --config-path ~/gotosocial/config.yaml \
admin account promote \
--username mark
Опять запускаем сервер:
gotosocial --config-path ~/gotosocial/config.yaml server start
Заходим на страничку: https://gts.test:8080/.
Если login не работает, самая частая причина – аккаунт ещё не подтверждён или не одобрен.
# Проверить список аккаунтов:
gotosocial --config-path ~/gotosocial/config.yaml admin account list
# Разрешаем аккаунт:
gotosocial --config-path ~/gotosocial/config.yaml \
admin account approve \
--username mark
# Подтвержаем eMail:
gotosocial --config-path ~/gotosocial/config.yaml \
admin account confirm \
--username mark
# Посмотреть путь к базе данных:
grep db-address ~/gotosocial/config.yaml
#db-address: "sqlite.db"
# Чтобы не было проблем, путь к базе данных в config.yaml нужно изменить на абсолютный: /home/mark/sqlite.db
У меня база данных лежит в /home/mark/ и права на неё только у суперпользователя, потому что я создавал её через sudo.
ls -l ~ | grep sql
# -rw-r--r-- 1 root root 1122304 Mar 8 10:39 sqlite.db
# -rw-r--r-- 1 root root 32768 Mar 8 11:09 sqlite.db-shm
# -rw-r--r-- 1 root root 0 Mar 8 11:09 sqlite.db-wal
# Чтобы это исправить, поменям владельца:
sudo chown mark:mark ~/sqlite.db*
# Теперь:
ls -l ~ | grep sql
# -rw-r--r-- 1 mark mark 1122304 Mar 8 10:39 sqlite.db
# -rw-r--r-- 1 mark mark 32768 Mar 8 11:14 sqlite.db-shm
# -rw-r--r-- 1 mark mark 0 Mar 8 11:14 sqlite.db-wal
Картинки должны быть доступны через "assets". Например, у меня иконка GoToSocial_icon6.webp лежит в /usr/share/gotosocial/default_avatars/GoToSocial_icon6.webp. Чтобы открыть её в браузере, нужно ввести в url-строку: https://gts.test/assets/default_avatars/GoToSocial_icon6.webp.
У папки /etc/gotosocial/ могут быть проблемы с правами доступа.
ls -ld /etc/gotosocial
# drwxr-x--- 3 gotosocial gotosocial 4096 Mar 8 00:34 /etc/gotosocial
sudo ls -ld /etc/gotosocial/template
# [sudo] password for mark:
# drwxr-x--- 2 gotosocial gotosocial 4096 Mar 8 00:34 /etc/gotosocial/template
# Даём права на чтение шаблонов ВСЕМ:
sudo chmod -R a+r /etc/gotosocial/template
# Нужно, чтобы пользователь мог заходить в каталог:
sudo chmod a+x /etc/gotosocial/template
# Теперь опять проверяем права:
sudo ls -ld /etc/gotosocial/template/
# drwxr-xr-x 2 gotosocial gotosocial 4096 Mar 8 00:34 /etc/gotosocial/template/
# Теперь дадим права на запись папке gotosocial:
sudo chmod o+x /etc/gotosocial
# Либо можно заменить владельца на своего пользователя,
# если сервер всегда запускается от него:
sudo chown -R mark:mark /etc/gotosocial/template
Сервер запустился, но не подгружаются картинки. Например, у меня не загружается дефолтная аватарка. Она находится вот здесь: /usr/share/gotosocial/default_avatars/GoToSocial_icon6.webp.
В браузере можно попасть на неё вот так: https://gts.test:8080/assets/default_avatars/GoToSocial_icon6.webp.
Но когда я кликаю по аватарке в профиле, то ссылка ведёт сюда: https://gts.test/assets/default_avatars/GoToSocial_icon6.webp.
То есть, отсутствует порт 8080.
Нужно поставить Nginx перед GoToSocial, чтобы он перенаправлял все запросы, которые идут на стандартный 443, на порт 8080:
браузер
↓
https://gts.test (443)
↓
Nginx
↓
http://127.0.0.1:8080
↓
GoToSocial
Минимальная настройка Nginx:
server {
listen 80;
server_name gts.test;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
При запуске сервера в локальной сети доканывает синее окно с предупреждением:
Warning! It looks like either trusted-proxies is not set correctly in this instance's configuration, or the upstream reverse proxy is not passing an appropriate X-Forwarded-For or X-Real-IP header.
This may cause rate-limiting issues and, by extension, federation issues.
If you are the instance admin, you may be able to fix this by adding 127.0.0.1/32 to your trusted-proxies.
For more information and other possible fixes for this issue, see the documentation.
Добавление ip-адреса 127.0.0.1/32 в мои trusted-proxies ничего не дало.
Можно добавить конкретные адреса в список исключений. Для домашней сети это будет выглядеть примерно так:
advanced-rate-limit-exceptions:
- "127.0.0.1/24"
- "192.168.1.0/24"
Но когда я захожу с этого же компьютера (с 127.0.0.1) сообщение всё равно появляется.
Поэтому в локальной сети единственный действенный способ – полностью отключить rate limit:
# Заменим:
advanced-rate-limit-requests: 300
# на:
advanced-rate-limit-requests: 0
При этом в официальной документации написано, что отключать rate-limiting только в крайнем случае, если остальные способы не дали результата.
То есть, логика следующая:
Вот настройки по умолчанию:
trusted-proxies:
- "127.0.0.1/32"
- "::1"
advanced-rate-limit-requests: 300
advanced-rate-limit-exceptions: []
Добавляем исключения для локальной сети:
advanced-rate-limit-exceptions:
- "127.0.0.1/24"
- "192.168.1.0/24"
Отключаем rate limit:
trusted-proxies:
- "127.0.0.1/32"
- "::1"
advanced-rate-limit-requests: 0
advanced-rate-limit-exceptions:
- "127.0.0.1/24"
- "192.168.1.0/24"
А раз мы отключили rate limit, то пропал смысл в исключениях, а значит убираем их:
trusted-proxies:
- "127.0.0.1/32"
- "::1"
advanced-rate-limit-requests: 0
https://gts.test/@mark
Если нужно посмотреть конкретное сообщение, то: https://gts.test/@mark/statuses/01KKZSKDH3J4BVP30RV16P5H7Z
lala