Pular para o conteúdo principal

Caddy com caminho personalizado

Caddy é um servidor web poderoso e flexível que pode ser usado para proteger seu painel Remnawave.

Instalação

Primeiramente, crie um diretório para o Caddy.

mkdir -p /opt/remnawave/caddy && cd /opt/remnawave/caddy

Em seguida, crie um arquivo docker-compose.yml.

touch docker-compose.yml && nano docker-compose.yml

E adicione o seguinte conteúdo ao arquivo:

docker-compose.yml
services:
remnawave-caddy:
image: remnawave/caddy-with-auth:latest
container_name: 'remnawave-caddy'
hostname: remnawave-caddy
restart: always
environment:
- AUTH_TOKEN_LIFETIME=3600
- REMNAWAVE_PANEL_DOMAIN=PANEL_DOMAIN
- REMNAWAVE_CUSTOM_LOGIN_ROUTE=supersecretroute
- AUTHP_ADMIN_USER=LOGIN_USERNAME
- AUTHP_ADMIN_EMAIL=LOGIN_EMAIL
- AUTHP_ADMIN_SECRET=LOGIN_PASSWORD

ports:
- '0.0.0.0:443:443'
networks:
- remnawave-network
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- remnawave-caddy-ssl-data:/data

networks:
remnawave-network:
name: remnawave-network
driver: bridge
external: true

volumes:
remnawave-caddy-ssl-data:
driver: local
external: false
name: remnawave-caddy-ssl-data

Configurando variáveis .env

Você precisa definir um nome de domínio para seu painel Remnawave. O Caddy emitirá automaticamente um certificado para ele.

REMNAWAVE_PANEL_DOMAIN=panel.domain.com

Rota de login personalizada. Este caminho será usado APENAS para a página de login. Não haverá redirecionamento se você abrir o painel sem ter se autenticado anteriormente. Apenas pessoas que conhecem este caminho poderão acessar o painel.

REMNAWAVE_CUSTOM_LOGIN_ROUTE=supersecretroute

Credenciais do administrador. Certifique-se de usar uma senha forte.

AUTHP_ADMIN_USER=admin
AUTHP_ADMIN_EMAIL=[email protected]
AUTHP_ADMIN_SECRET=strong_password

Tempo de vida do token.

AUTH_TOKEN_LIFETIME=3600

Caddyfile

Vamos nos aprofundar no Caddyfile.

Primeiro, você precisa selecionar uma de nossas configurações predefinidas.

informação

Recomendamos usar a configuração de segurança completa com MFA para ambientes de produção onde você emitirá chaves de API.

perigo

Você só conseguirá fazer login através deste caminho (REMNAWAVE_CUSTOM_LOGIN_ROUTE).

Configuração de segurança completa com MFA

  • Todas as rotas são protegidas por autenticação. (Frontend, Backend)
  • Todos os endpoints de API são protegidos, incluindo endpoints /api/sub/*.
  • O login requer MFA com códigos OTP.
  • Chaves de API especiais podem ser emitidas para endpoints /api/*.
  • Proteção completa do domínio.

Execute o comando abaixo para baixar o Caddyfile.

curl -o Caddyfile https://raw.githubusercontent.com/remnawave/caddy-with-auth/refs/heads/main/examples/custom-webpath-with-auth-and-protected-api-route/Caddyfile

Rotas de API sem autenticação (api/*)

  • Rotas são protegidas por autenticação. (Frontend)
  • O login requer MFA com códigos OTP. (Frontend)
  • Todos os endpoints de API não são protegidos! (/api/* é público)
perigo

Esta configuração expõe os endpoints /api/* à Internet pública.

Todos os endpoints não exigirão autenticação, mas ainda usarão os recursos de segurança do Remnawave.

Recomendamos usar a configuração de segurança completa com MFA para ambientes de produção onde você emitirá chaves de API.

Execute o comando abaixo para baixar o Caddyfile.

curl -o Caddyfile https://raw.githubusercontent.com/remnawave/caddy-with-auth/refs/heads/main/examples/custom-webpath-with-auth-with-api-without-auth/Caddyfile

Endpoints /api/sub/* sem autenticação

  • Rotas são protegidas por autenticação. (Frontend)
  • O login requer MFA com códigos OTP. (Frontend)
  • Apenas endpoints /api/sub/* são públicos, outros endpoints são protegidos.
perigo

Esta configuração expõe os endpoints /api/sub/* à Internet pública.

Recomendamos usar a configuração de segurança completa com MFA para ambientes de produção onde você emitirá chaves de API e usará @remnawave/subscription-page para página de assinatura pública.

Execute o comando abaixo para baixar o Caddyfile.

curl -o Caddyfile https://raw.githubusercontent.com/remnawave/caddy-with-auth/refs/heads/main/examples/custom-webpath-with-auth-with-opened-api-sub/Caddyfile

Executando o contêiner

Após selecionar uma das configurações acima, você pode iniciar o contêiner com o seguinte comando.

docker compose up -d && docker compose logs -f

Acessando o painel

Após o contêiner estar em execução, você pode acessar o painel em https://panel.domain.com/REMNAWAVE_CUSTOM_LOGIN_ROUTE.

No primeiro início, você será solicitado a adicionar um método MFA.

Recomendamos usar o Google Authenticator.

Desativar MFA

Se você quiser desativar completamente o MFA, pode fazer isso editando o Caddyfile.

Abra o Caddyfile e altere a seguinte linha:

cd /opt/remnawave/caddy && nano Caddyfile

Encontre as seguintes linhas e remova a linha require mfa.

Caddyfile
transform user {
match origin local
action add role authp/admin
require mfa
}

Depois disso, você pode reiniciar o contêiner com o seguinte comando.

docker compose down && docker compose up -d && docker compose logs -f

Acessando a página do Portal de Autenticação

informação

Você pode acessar a página do Portal de Autenticação em https://<your-domain>/REMNAWAVE_CUSTOM_LOGIN_ROUTE/auth.

Auth Portal page

Aqui você pode ir rapidamente ao painel do Remnawave ou gerenciar algumas configurações do Portal de Autenticação.

Na seção MFA, você pode excluir ou adicionar novos métodos MFA.

Emitindo chaves de API

informação

Você pode acessar a página do Portal de Autenticação em https://<your-domain>/REMNAWAVE_CUSTOM_LOGIN_ROUTE/auth.

Na página do Portal de Autenticação, você pode emitir chaves de API. Clique na aba API-keys.

informação

Depois de emitir uma chave de API, você pode usá-la no cabeçalho X-Api-Key de suas solicitações à API.

Exemplo: X-Api-Key: YxOovHLnpkcmSig5082egcHnyTk8SK4dNGAFHgZ2LKZezgj5oUj2FA2IR2sMwbALnP9YNpzZ

API-keys