#
Reverse proxying
Nota
Esta seção não se refere a proxies reversos OpenAI/Claude. Isso se refere exclusivamente a Proxies Reversos HTTP/HTTPS.
O Termux é confuso de configurar? Você está cansado de atualizar e instalar o ST em cada dispositivo que possui? Quer organização de seus chats e personagens? Bem, você está com sorte. Este guia esperançosamente cobrirá como hospedar o SillyTavern no seu PC onde você pode se conectar de qualquer lugar e conversar com seus bots no mesmo PC que você usa para executar modelos de IA!
Aviso
Este guia não é destinado a iniciantes. Será muito técnico.
#
Aviso Importante
Para Usuários Windows
Este guia não é para usuários Windows. Recomendamos usar uma VM Linux ou WSL2 para seguir este guia.
Para Usuários Linux
Você deve ter conhecimento prévio de
- Comandos do console Linux
- Registros DNS
- Endereços IP públicos
- Docker
Você terá que comprar um domínio para si mesmo e configurar um CNAME para sua página SillyTavern. Sugerimos adicionar ou comprar o domínio no Cloudflare pois este guia cobrirá como fazer isso com o próprio Cloudflare.
#
Instalação
#
Linux (SillyTavern Bare-Metal)
Para Linux, faremos proxy reverso do SillyTavern através do Traefik. Existem outras opções como NGINX ou Caddy, mas para este guia, usaremos o Traefik pois é o que usamos.
Obtenha o IP privado do seu computador usando
ifconfigou do seu roteador.Dica
É recomendado definir seu IP privado como um IP estático. Consulte o manual do seu roteador ou o Google para configurar IPs estáticos.
Obtenha seu IP público do seu modem pesquisando no Google
what's my ip.Sobre IPs Públicos
A maioria das redes residenciais/domésticas usa IPs dinâmicos que são renovados após meses de uso. Se você tem um IP dinâmico, use DDClient ou lembre-se de verificar e alterar seu IP público de vez em quando no painel do Cloudflare.
Instale o Docker seguindo o guia de instalação do Docker aqui.
Nota
Não instale o Docker Desktop.
- Siga as etapas em Manage Docker as a non-root user no guia pós-instalação do Docker aqui.
Vá para sua pasta raiz no Linux e crie uma nova pasta chamada
docker.cd / sudo mkdir docker && cd dockerExecute
chown, substituindopelo seu nome de usuário Linux para definir as permissões na pasta docker. sudo chown -R <USER>:<USER> .Crie uma pasta dentro da pasta docker, sendo
secretse dentro de secrets sendocloudflare.mkdir secrets && mkdir secrets/cloudflareCrie uma pasta dentro da pasta docker, sendo
appdatae dentro de appdata sendotraefik. Entre na pastaappdata/traefikdepois.mkdir appdata && mkdir appdata/traefik cd appdata/traefikCrie um arquivo acme.json usando
touche defina as permissões dele para 600.touch acme.json chmod 600 acme.jsonUsando
nanoou um editor similar, crie um arquivo chamado traefik.yml e cole o seguinte. Substitua o email de exemplo pelo seu próprio, depois salve o arquivo.api: dashboard: true debug: true insecure: true entryPoints: http: address: ":80" http: redirections: entryPoint: to: https scheme: https https: address: ":443" serversTransport: insecureSkipVerify: true providers: docker: endpoint: "unix:///var/run/docker.sock" exposedByDefault: false file: filename: /config.yml watch: true certificatesResolvers: cloudflare: acme: email: YOUR_CLOUDFLARE_EMAL@DOMAIN.com storage: acme.json dnsChallenge: provider: cloudflare #disablePropagationCheck: true # uncomment this if you have issues pulling certificates through cloudflare, By setting this flag to true disables the need to wait for the propagation of the TXT record to all authoritative name servers. resolvers: - "1.1.1.1:53" - "1.0.0.1:53"Retorne para a pasta
docker.cd /dockerUsando
nanoou um editor similar, crie um arquivo chamado docker-compose.yaml e cole o seguinte. Salve o arquivo depois.secrets: CF_DNS_API_KEY: file: ./secrets/cloudflare/CF_DNS_API_KEY services: traefik: image: traefik:latest container_name: traefik restart: unless-stopped secrets: - CF_DNS_API_KEY ports: - 80:80 - 443:443 - 8080:8080 environment: CLOUDFLARE_DNS_API_TOKEN_FILE: /run/secrets/CF_DNS_API_KEY CLOUDFLARE_ZONE_API_TOKEN_FILE: /run/secrets/CF_DNS_API_KEY volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - ./appdata/traefik/traefik.yml:/traefik.yml:ro - ./appdata/traefik/config.yml:/config.yml:ro - ./appdata/traefik/acme.json:/acme.json - /etc/localtime:/etc/localtime:ro networks: internal: driver: bridge- Faça login no Cloudflare e clique no seu domínio, seguido de Get your API token.
Clique em Create Token e depois Create Custom Token e certifique-se de dar ao seu token as seguintes permissões.
Permissões do Token
Zone -> DNS -> Edit
Zone -> Zone -> Read
Clique em Continue to summary seguido de Create Token.
- Copie a chave do token dada a você e armazene-a em algum lugar seguro.
- Use
cdpara ir parasecrets/cloudflaree usandonanoou um editor similar, crie um arquivo chamado CF_DNS_API_KEY e cole sua chave dentro. Retorne para sua página de domínio e vá para DNS. Crie um novo registro usando Add record e crie duas chaves do tipo A como as abaixo. Substitua
PUBLIC_IPpelo seu próprio IP público, depois clique em Save.Crie outro registro do tipo
CNAME, depois clique em Save. Aqui está um exemplo de como deve aparecer no painel do Cloudflare.Use
cdpara ir para appdata/traefik e usandonanoou um editor similar, crie um arquivo chamado config.yml e cole o seguinte. SubstituaPRIVATE_IPpelo IP privado que você obteve, esilly.DOMAIN.compelo nome do seu subdomínio e página de domínio, depois salve o arquivo.http: routers: sillytavern: entryPoints: - "https" rule: "Host(`silly.DOMAIN.com`)" middlewares: - https-redirectscheme tls: {} service: sillytavern services: sillytavern: loadBalancer: servers: - url: "http://PRIVATE_IP:8000" passHostHeader: true middlewares: https-redirectscheme: redirectScheme: scheme: https permanent: trueExecute o Docker Compose usando os seguintes comandos:
cd /docker docker compose up -dVá para sua pasta SillyTavern e edite
config.yamlpara habilitar o modo listen e autenticação básica, enquanto desabilitawhitelistMode.listen: yes whitelistMode: false basicAuthMode: trueDica
Certifique-se de alterar o nome de usuário e senha padrão para algo forte que você possa lembrar.
Ou para usar as contas do SillyTavern como nomes de usuário e senhas:
basicAuthMode: true enableUserAccounts: true perUserBasicAuth: trueDica
Antes de habilitar perUserBasicAuth, certifique-se de ter uma configuração multiusuário válida com senhas funcionando.
Aguarde alguns minutos, depois abra sua página de domínio que você criou para o ST. No final, você deve ser capaz de abrir o SillyTavern de qualquer lugar que você vá apenas com uma URL e uma conta.
Dica
Se nada acontecer após vários minutos, verifique os logs do container do Traefik para possíveis erros.
- Aproveite! :D
#
Linux (SillyTavern Docker)
Nota
Note que executamos o SillyTavern em bare-metal sobre Docker. Esta é uma ideia aproximada do que faríamos no Docker com outros containers Docker que tendemos a usar com o ST.
- Siga os Passos 1-11 de Linux (SillyTavern Bare-Metal).
- Faça login no Cloudflare e clique no seu domínio, seguido de Get your API token.
Clique em Create Token e depois Create Custom Token e certifique-se de dar ao seu token as seguintes permissões.
Permissões do Token
Zone -> DNS -> Edit
Zone -> Zone -> Read
Clique em Continue to summary seguido de Create Token.
- Copie a chave do token dada a você e armazene-a em algum lugar seguro.
- Use
cdpara ir parasecrets/cloudflaree usandonanoou um editor similar, crie um arquivo chamado CF_DNS_API_KEY e cole sua chave dentro. Retorne para sua página de domínio e vá para DNS. Crie um novo registro usando Add record e crie duas chaves do tipo A como as abaixo. Substitua
PUBLIC_IPpelo seu próprio IP público e o domínio de exemplo pelo seu domínio, depois clique em Save.Crie outro registro do tipo
CNAME, depois clique em Save. Aqui está um exemplo de como deve aparecer no painel do Cloudflare.Clone o SillyTavern via Git na pasta
docker.cd /docker && git clone https://github.com/SillyTavern/SillyTavernUsando
nanoou um editor similar, crie um arquivo chamado docker-compose.yaml e cole o seguinte. Substituasilly.DOMAIN.compelo subdomínio que você adicionou acima, depois salve o arquivo.secrets: CF_DNS_API_KEY: file: ./secrets/cloudflare/CF_DNS_API_KEY services: traefik: image: traefik:latest container_name: traefik restart: unless-stopped secrets: - CF_DNS_API_KEY ports: - "80:80" - 443:443 - 8080:8080 environment: CLOUDFLARE_DNS_API_TOKEN_FILE: /run/secrets/CF_DNS_API_KEY CLOUDFLARE_ZONE_API_TOKEN_FILE: /run/secrets/CF_DNS_API_KEY volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - ./appdata/traefik/traefik.yml:/traefik.yml:ro - ./appdata/traefik/config.yml:/config.yml:ro - ./appdata/traefik/acme.json:/acme.json - /etc/localtime:/etc/localtime:ro sillytavern: build: ./SillyTavern container_name: sillytavern hostname: sillytavern image: ghcr.io/sillytavern/sillytavern:latest volumes: - "./appdata/sillytavern/config:/home/node/app/config" - "./appdata/sillytavern/data:/home/node/app/data" restart: unless-stopped labels: - "traefik.enable=true" - "traefik.http.routers.sillytavern.entrypoints=http" - "traefik.http.routers.sillytavern.rule=Host(`silly.DOMAIN.com`)" - "traefik.http.middlewares.sillytavern-https-redirect.redirectscheme.scheme=https" - "traefik.http.routers.sillytavern.middlewares=sillytavern-https-redirect" - "traefik.http.routers.sillytavern-secure.entrypoints=https" - "traefik.http.routers.sillytavern-secure.rule=Host(`silly.DOMAIN.com`)" - "traefik.http.routers.sillytavern-secure.tls=true" - "traefik.http.routers.sillytavern-secure.service=sillytavern" - "traefik.http.services.sillytavern.loadbalancer.server.port=8000" networks: internal: driver: bridgeExecute o Docker Compose usando os seguintes comandos:
docker compose up -dPare o container Docker do SillyTavern.
docker compose stop sillytavernVá para sua pasta SillyTavern (
appdata/sillytavern/config) e editeconfig.yamlpara habilitar o modo listen e autenticação básica, enquanto desabilitawhitelistMode.listen: yes whitelistMode: false basicAuthMode: trueDica
Certifique-se de alterar o nome de usuário e senha padrão para algo forte que você possa lembrar.
Inicie o container Docker do SillyTavern novamente.
docker compose up -d sillytavernAguarde alguns minutos, depois abra sua página de domínio que você criou para o ST. No final, você deve ser capaz de abrir o SillyTavern de qualquer lugar que você vá apenas com uma URL e uma conta.
Dica
Se nada acontecer após vários minutos, verifique os logs do container do Traefik para possíveis erros.
- Aproveite! :D
#
Atualizando seu DNS do Cloudflare
DDClient permite que você sincronize seu IP público com o Cloudflare na situação em que seu ISP o altere, permitindo que você continue acessando sua instância ST como se nada tivesse acontecido.