Гид по технологиям

Установка Teddit на Linux

6 min read Linux Обновлено 03 Dec 2025
Установка Teddit на Linux — пошагово
Установка Teddit на Linux — пошагово

Изображение: установка Teddit на Linux, заглавная иллюстрация

Содержание

  • Предварительные условия
  • Установка Teddit
  • Настройка веб‑сервера (Nginx) и SSL
  • Создание Reddit API‑ключа
  • Автоматизация запуска и управление процессом
  • Отладка и часто возникающие проблемы
  • Безопасность и конфиденциальность
  • Плейбук развертывания и чеклисты
  • Критерии приёмки и тесты
  • Краткое резюме

Предварительные условия

Коротко: актуальная Ubuntu (или совместимый дистрибутив), доступ по SSH, домен (или тестовый localhost), права sudo.

Определения в одну строку:

  • Teddit — минималистичный фронтенд для Reddit, ориентированный на приватность и отсутствие JavaScript.
  • Reverse proxy — прокси‑сервер (например, Nginx), который перенаправляет внешние запросы на внутренний процесс.

Требования к серверу:

  • Порты: 22 (SSH), 80 (HTTP), 443 (HTTPS).
  • Компоненты: Node.js, Redis, ffmpeg (если нужны медиа), Nginx, certbot.

Совет: работайте с резервной копией config.js и храните секреты вне репозитория.

Установка Teddit

Эти шаги основаны на Ubuntu. Замените yetanotherteddit.xyz вашим доменом или используйте localhost для тестирования.

  1. Обновите индекс пакетов и установите зависимости:
sudo apt update && sudo apt install -y nodejs redis-server ffmpeg git iptables-persistent nginx npm certbot python3-certbot-nginx

Установка зависимостей для Teddit

Примечание: при необходимости используйте официальный репозиторий NodeSource для конкретной версии Node.js.

  1. Скопируйте репозиторий Teddit и перейдите в каталог проекта:
git clone https://codeberg.org/teddit/teddit
cd teddit

Клонирование репозитория Teddit

  1. Установите зависимости npm (заметьте пробел перед флагом):
npm install --no-optional

Установка Node.js зависимостей Teddit

  1. Создайте локальную конфигурацию из шаблона:
cp config.js.template config.js
  1. Быстрая проверка запуска приложения:
npm start

После этого Teddit будет слушать на локальном порту (по умолчанию 8080). Проверьте в браузере http://127.0.0.1:8080 если вы работаете локально.

Тестовый запуск Teddit

Важно: убедитесь, что Redis запущен: sudo systemctl status redis.

Настройка веб‑сервера (Nginx) и SSL

Мы рекомендуем использовать Nginx как обратный прокси перед Teddit — это упрощает включение HTTPS и добавляет уровень безопасности.

  1. Разрешите входящие соединения только на нужных портах:
sudo iptables -I INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT
sudo iptables -I INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT
sudo netfilter-persistent save

Правила брандмауэра для Teddit

Совет: на сервере с UFW используйте ufw allow вместо iptables.

  1. Создайте файл конфигурации Nginx:
sudo nano /etc/nginx/sites-available/teddit

Вставьте конфигурацию сервера (пример простого reverse proxy):

server {
    listen 80;
    listen [::]:80;

    server_name yetanotherteddit.xyz www.yetanotherteddit.xyz;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Файл можно адаптировать для домена или для использования Unix socket, если вы захотите.

  1. Включите конфигурацию и перезагрузите Nginx:
sudo ln -s /etc/nginx/sites-available/teddit /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
  1. Подключите бесплатный сертификат Let’s Encrypt через Certbot:
sudo certbot --nginx -d yetanotherteddit.xyz -d www.yetanotherteddit.xyz

После успешного получения сертификата все соединения к вашему домену будут защищены HTTPS.

Подсказка: изучите заголовки безопасности (Content-Security-Policy, X-Frame-Options и т. п.) для дополнительного hardening.

Создание Reddit API‑ключа для Teddit

Teddit использует Reddit API для получения страниц и историй. Без ключа доступ к некоторым частям Reddit будет ограничен.

  1. Войдите в свой аккаунт Reddit и откройте страницу “Приложения” (Application Preferences).

  2. Нажмите “Create an App…” и заполните форму:

  • Имя приложения: что угодно (например, TedditInstance)
  • Тип приложения: выберите “installed app”
  • About URL: укажите адрес вашего экземпляра (например, https://yetanotherteddit.xyz)
  • Redirect URL: укажите http://localhost:8080

Создание нового приложения в Reddit

  1. Нажмите “create app” и скопируйте App ID (Client ID) из карточки приложения.

Скопируйте App ID из интерфейса Reddit

  1. На сервере откройте файл config.js и найдите параметр reddit_app_id. Вставьте туда скопированную строку.

Вставка App ID в config.js Teddit

Сохраните и перезапустите приложение (или используйте менеджер процессов, см. раздел ниже).

Подсказка: Teddit не поддерживает логин пользователей — это только просмотр контента.

Автоматизация запуска и управление процессом

Для стабильной работы на сервере рекомендуем один из двух подходов:

Вариант A — pm2 (прост в использовании для Node.js):

npm install pm2 -g
pm2 start app.js --name teddit
pm2 save
pm2 startup

Вариант B — systemd unit (более традиционный для Linux):

Создайте /etc/systemd/system/teddit.service с содержимым:

[Unit]
Description=Teddit service
After=network.target redis-server.service

[Service]
Type=simple
User=www-data
WorkingDirectory=/path/to/teddit
ExecStart=/usr/bin/npm start
Restart=on-failure

[Install]
WantedBy=multi-user.target

Затем:

sudo systemctl daemon-reload
sudo systemctl enable --now teddit.service

Совет: запускайте сервис под непользовательским (unprivileged) аккаунтом — например, www-data.

Отладка и часто возникающие проблемы

  1. Приложение стартует, но Nginx возвращает 502.
  • Проверьте, что Teddit слушает на 127.0.0.1:8080 (ss -tlnp | grep 8080).
  • Проверьте логи systemd / pm2 и stdout приложения.
  1. Не видно более первой страницы сабреддита.
  • Скорее всего, неверный или отсутствующий reddit_app_id в config.js. Проверьте значение.
  • Временно можно отключить OAuth: use_reddit_oauth = false в config.js (ограниченная функциональность).
  1. Ошибки npm install.
  • Убедитесь в достаточном объёме свободной памяти и диска.
  • Перезапустите npm cache clean --force и повторите.
  1. Невозможность скачивать видео.
  • Teddit по умолчанию не скачивает медиа. Для скачивания видео используйте внешние инструменты (yt-dlp и т. п.) и настройте прокси/скрипт для интеграции.

Безопасность и конфиденциальность

Важные рекомендации:

  • Ограничьте доступ по SSH ключами и запретите root‑логин.
  • Обновляйте систему и зависимости (sudo apt upgrade и npm audit).
  • Включите Fail2ban для защиты SSH и Nginx.
  • Минимизируйте логи: если вы запускаете публичный экземпляр, подумайте о ротации логов и правилах хранения персональных данных.

Примечание о приватности: Teddit стремится не отслеживать пользователей, но ваш собственный сервер может вести журналы (доступ по IP). Опубликуйте политику конфиденциальности для пользователей вашего инстанса.

Плейбук развертывания — пошаговый чеклист

Перед развертыванием (оператор):

  • Резервная копия конфигураций и данных
  • Доступ к доменным настройкам (A/AAAA записи)
  • Установлен certbot и Nginx

Развёртывание:

  • Установить зависимости (apt)
  • Клонировать teddit и выполнить npm install
  • Создать config.js и вставить reddit_app_id
  • Настроить Nginx, получить сертификат
  • Настроить pm2/systemd и включить автозапуск
  • Протестировать доступ по HTTPS

Резерв и мониторинг:

  • Настроить логирование и ротацию логов
  • Настроить мониторинг процесса и алерты (uptime / systemd)

Критерии приёмки

Минимальный набор для успешной приёмки системы:

  • Teddit отвечает по HTTPS на домене и возвращает страницы субреддита.
  • Reddit API‑ключ корректно настроен и работает (страницы пролистываются дальше 1‑й).
  • Сервис автоматически запускается после reboot.
  • SSL сертификат корректен и автоматически обновляется certbot.

Тесты принятия:

  • Открыть 3 разных сабреддита и убедиться, что контент загружается.
  • Проверить страницу ошибки/404 и убедиться, что Nginx отдает пользовательскую страницу ошибки.
  • Имитировать отказ процесса Teddit и убедиться, что systemd/pm2 его рестартует.

Ментальные модели и альтернативы

Модель: Teddit = статический, быстрый фронтенд + динамический бэкенд (Node.js) + обратный прокси (Nginx) + кеш/буфер (Redis).

Альтернативы:

  • Запуск в Docker-контейнере (удобно для изоляции и миграций).
  • Использовать другие фронтенды (например, альтернативные проекты с похожей философией).

Когда не подходит Teddit:

  • Нужна полноценная интерактивность с логином/комментированием — Teddit не для этого.

Резюме

  • Teddit — хороший выбор для приватного, быстого просмотра Reddit.
  • Следуйте чеклистам: зависимости, Nginx+SSL, Reddit App ID, автозапуск.
  • Обратите внимание на безопасность, логирование и политику конфиденциальности при публичном запуске.

Краткие советы:

  • Для продакшн‑развёртывания рассмотрите Docker и систему CI/CD.
  • Храните секреты (App ID) вне публичных репозиториев.

Image credit: Unsplash. Все изменения и скриншоты — Ramces Red.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Быстрое переключение пользователей Windows 10: включить и отключить
Windows

Быстрое переключение пользователей Windows 10: включить и отключить

Временно отключить уведомления на Android
Android.

Временно отключить уведомления на Android

Покупка восстановленной и открытой техники на Black Friday
Покупки

Покупка восстановленной и открытой техники на Black Friday

Отображение XML в браузере с помощью XSLT
Веб-разработка

Отображение XML в браузере с помощью XSLT

Восстановление файлов после revert в Git
GIT

Восстановление файлов после revert в Git

Упрощение Quick Settings в Windows 11
Windows

Упрощение Quick Settings в Windows 11