
миниатюрный чат-сервер на базе SSH
Чат-сервер на базе SSH с публичными и приватными (только по приглашениям) каналами
У каждого канала есть владелец, который может менять его баннер и приглашать пользователей (в публичный канал может вступить любой)
Попробуйте демо:
ssh [email protected]

Этот проект сейчас очень новый, поэтому не полагайтесь на него ни для чего критичного
Пока код находится в одном файле, main.go, но я планирую почистить его и разбить на части, особенно логику команд
Создан с использованием стека charm bubbletea/wish
Вы можете либо собрать бинарник самостоятельно с помощью go build, либо использовать docker.
docker run -t -i -p 2222:2222 -e CLICOLOR_FORCE=1 -e COLORTERM=truecolor -e TERM=xterm-256color --tmpfs /tmp -v ./ssh_keys/id_ed25519:/home/islechat/app/.ssh/id_ed25519:ro -v ./config.toml:/home/islechat/config.toml ashfn0/islechat
Кроме того, в этом репозитории есть файл docker-compose. Формат файла config.toml:
Host = "0.0.0.0"
Port = "2222"
ServerName = "isle.chat" # Name of the server
AdminUsername = "admin" # Admin's username (Can post in the announcement channel)
BotUsername = "islebot" # Username of the bot for system messages
GlobalBanner = "banner" # Banner used for the #global channel
AnnouncementChannel = "news" # Name of read-only announcement channel
DefaultBanner = "banner" # Default banner for new channels
WelcomeMessage = "A new user joined for the first time! Welcome @%s. Run /help for information" # Message sent when a user joins. %s is the username of the user
FilterPublicMessages = false # Whether or not public messages should be filtered for profanity
RegistrationHeader = "isle.chat registration " # Text shown at top of registration page
DatabaseMode = "sqlite" # Either sqlite or postgres
PostgresHost = "postgres"
PostgresUser = "islechat"
PostgresPassword = "password"
PostgresDBName = "islechat"
PostgresPort = "5432"
PostgresSSL = "disable"
SSH-ключ используется из пути: .ssh/id_ed25519" (они будут созданы автоматически, если вы не укажете свой).
Если вы хотите, чтобы работало определение часового пояса по IP, вам нужно скачать GeoLite2-City.mmdb с сайта (для этого достаточно создать аккаунт, это бесплатно) и время от времени обновлять его