Вернуться назад

GoToSocial

Официальный сайт: 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 только в крайнем случае, если остальные способы не дали результата.

То есть, логика следующая:

RSS-лента сообщений

https://gts.test/@mark

Если нужно посмотреть конкретное сообщение, то: https://gts.test/@mark/statuses/01KKZSKDH3J4BVP30RV16P5H7Z

веб-интрфейсы


    lala