diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index 5a67490e..33d785fb 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -12,6 +12,11 @@ export default defineUserConfig({ title: "Nginx Proxy Manager", description: "Expose your services easily and securely", }, + "/pt/": { + lang: "pt", + title: "Nginx Proxy Manager", + description: "Exponha seus serviços de forma fácil e segura" + }, }, head: [ ["link", { rel: "icon", href: "/icon.png" }], @@ -86,6 +91,58 @@ export default defineUserConfig({ }, ], }, + }, + '/pt/': { + label: 'Português', + selectLanguageText: 'Línguas', + selectLanguageName: 'Português', + editLinkText: 'Edite esta página no GitHub', + navbar: [ + { text: "Início", link: "/pt/inicio/" } + ], + sidebar: { + '/': [ + { + text: 'Página Inicial', + link: '/pt' + }, + { + text: 'Guia', + link: '/pt/guia/', + collapsible: true, + }, + { + link: '/pt/capturas/', + text: 'Capturas', + collapsible: true, + }, + { + text: 'Início', + link: '/pt/inicio/', + collapsible: true, + }, + { + text: 'Configurações Avançadas', + link: '/pt/configuracoes-avancadas/', + collapsible: true, + }, + { + text: 'Actualizações', + link: '/pt/actualizacoes/', + collapsible: true, + }, + { + text: 'Perguntas Frequentes', + link: '/pt/perguntas-frequentes/', + collapsible: true, + }, + { + text: 'Aplicativos Terceiros', + link: '/pt/aplicativos-terceiros/', + collapsible: true, + }, + ], + }, } } }), @@ -114,6 +171,9 @@ export default defineUserConfig({ '/': { placeholder: 'Search', }, + '/pt/': { + placeholder: 'Pesquisar', + }, }, }), ], diff --git a/docs/pt/README.md b/docs/pt/README.md new file mode 100644 index 00000000..38f2c803 --- /dev/null +++ b/docs/pt/README.md @@ -0,0 +1,39 @@ +--- +home: true +heroImage: /logo.png +actionText: Começar → +actionLink: /pt/guia/ +footer: MIT Licensed | Copyright © 2016-present jc21.com +--- + +
+
+

Conecte-se

+

+ Exponha serviços da Web na sua rede · + SSL gratuito com o Let's Encrypt · + Projetado com a segurança em mente · + Perfeito para redes domésticas +

+
+
+

Proxy Hosts

+

Exponha os serviços web da sua rede privada e conecte-se em qualquer lugar.

+
+
+

UI atrativa

+

Baseado no Tabler, é prazeroso usar a interface. Configurar um servidor nunca foi tão divertido assim.

+
+
+

SSL Grátis

+

O suporte integrado ao Let's Encrypt permite que você proteja seus serviços web sem nenhum custo. Os certificados até se renovam!

+
+
+

Docker FTW

+

Construído como uma imagem do Docker, o Nginx Proxy Manager requer apenas um banco de dados.

+
+
+

Múltiplos Usuários

+

Configure outros usuários para visualizar ou gerenciar seus próprios hosts. Permissões de acesso total estão disponíveis.

+
+
diff --git a/docs/pt/actualizacoes/README.md b/docs/pt/actualizacoes/README.md new file mode 100644 index 00000000..2b46adbb --- /dev/null +++ b/docs/pt/actualizacoes/README.md @@ -0,0 +1,10 @@ +# Actualizações + +```bash +docker-compose pull +docker-compose up -d +``` + +Este projecto irá actualizar automaticamente qualquer base de dados ou outros requisitos, então você não precisa seguir nenhum instrução maluca. Os comandos a cima irão baixar as últimas actualizações e recriar os containers docker. + +Veja a [lista de releases](https://github.com/NginxProxyManager/nginx-proxy-manager/releases) para o passo-a-passo de actualização para cada release. diff --git a/docs/pt/aplicativos-terceiros/README.md b/docs/pt/aplicativos-terceiros/README.md new file mode 100644 index 00000000..ae788d07 --- /dev/null +++ b/docs/pt/aplicativos-terceiros/README.md @@ -0,0 +1,14 @@ +# Aplicativos Terceiros + +À medida que este software ganha popularidade é comum vê-lo integrado com outras plataformas. Esteja ciente de que, a menos que especificamente mencionado na documentação dessas integrações, elas *não são suportadas* por mim. + +Integrações conhecidas: + +- [HomeAssistant Hass.io plugin](https://github.com/hassio-addons/addon-nginx-proxy-manager) +- [UnRaid / Synology](https://github.com/jlesage/docker-nginx-proxy-manager) +- [Proxmox Scripts](https://github.com/ej52/proxmox-scripts/tree/main/lxc/nginx-proxy-manager) +- [nginxproxymanagerGraf](https://github.com/ma-karai/nginxproxymanagerGraf) + + +Se gostarias de ter a tua integração do Nginx Proxy Manager listada aqui, por favor, abra um [Github issue](https://github.com/jc21/nginx-proxy-manager/issues/new?assignees=&labels=enhancement&template=feature_request.md&title=) + diff --git a/docs/pt/capturas/README.md b/docs/pt/capturas/README.md new file mode 100644 index 00000000..31ccee67 --- /dev/null +++ b/docs/pt/capturas/README.md @@ -0,0 +1,12 @@ +# Capturas + +Iniciar sessão +Painel Administrativo +Proxy Hosts +Adicionar Proxy Host +Redirecionamento de Hosts +404 Hosts +Permissões de usuários +Certificados +Auditoria de Log +Configurações Personalizadas diff --git a/docs/pt/configuracoes-avancadas/README.md b/docs/pt/configuracoes-avancadas/README.md new file mode 100644 index 00000000..e634bd4d --- /dev/null +++ b/docs/pt/configuracoes-avancadas/README.md @@ -0,0 +1,184 @@ +# Configurações Avançadas + +## Rodando processos como usuário/grupo + +Por padrão, os serviços (nginx etc) serão executados como usuário `root` dentro do container do docker. +Você pode alterar esse comportamento definindo as seguintes variáveis de ambiente. +Elas não apenas executarão os serviços como esse usuário/grupo, elas mudarão a propriedade +nas pastas `data` e `letsencrypt` na inicialização. + +```yml +services: + app: + image: 'jc21/nginx-proxy-manager:latest' + environment: + PUID: 1000 + PGID: 1000 + # ... +``` + +Isso pode fazer com que o container falhe ao inicializar em certos sistema, por falta de permissão para rodar a aplicação na porta 80. A única forma de resolver isso é remover as variáveis e rodar com o usuário root. + +## Melhor prática: use uma rede Docker + +Para aqueles que têm alguns de seus serviços a rodar em Docker no mesmo host que o Nginx Proxy Manager, aqui está um truque para garantir que as coisas fiquem um pouco melhor. Ao criar uma rede docker personalizada, você não precisa publicar portas para seus serviços em todas as interfaces do host do Docker. + +Crie uma rede, por exemplo, "scoobydoo": + +```bash +docker network create scoobydoo +``` + +Em seguida, adicione o seguinte ao arquivo `docker-compose.yml` para o Nginx Proxy Manager e qualquer outro serviço em execução neste host do Docker: + +```yml +networks: + default: + external: true + name: scoobydoo +``` + +Vejamos o exemplo de um Portainer: + +```yml +version: '3.8' +services: + + portainer: + image: portainer/portainer + privileged: true + volumes: + - './data:/data' + - '/var/run/docker.sock:/var/run/docker.sock' + restart: unless-stopped + +networks: + default: + external: true + name: scoobydoo +``` + +Agora, na UI do Nginx Proxy Manager, você pode criar um proxy host com `portainer` como o nome do host, e porta `9000` como a porta. Mesmo que esta porta não esteja listada no arquivo docker-compose, é "exposto" pela imagem do Portainer Docker para você e não está disponível em hosts do Docker fora desta rede. O nome do serviço é usado como o hostname, portanto, verifique se os nomes dos seus serviços são únicos ao usar a mesma rede. + +## Docker Healthcheck + +O `Dockerfile` que levanta este projeto não inclui um` healthcheck`, mas você pode optar por usar este recurso adicionando o seguinte ao serviço no seu `docker-compose.yml`: + +```yml +healthcheck: + test: ["CMD", "/bin/check-health"] + interval: 10s + timeout: 3s +``` + +## Docker File Secrets + +Esta imagem suporta o uso de Docker secrets para importação de arquivos e manter usernames ou senhas sensíveis a serem passados ou preservados em um simples plaintext. + +Você pode definir qualquer variável de ambiente de um arquivo afixando `__FILE` (duplo-underscore FILE) ao nome da variável de ambiente. + +```yml +version: '3.8' + +secrets: + # Secrets são arquivos de texto de linha única, onde o único conteúdo é a secret + # Os caminhos neste exemplo assumem que as secrets são armazenadas em uma pasta local chamada ".secrets" + DB_ROOT_PWD: + file: .secrets/db_root_pwd.txt + MYSQL_PWD: + file: .secrets/mysql_pwd.txt + +services: + app: + image: 'jc21/nginx-proxy-manager:latest' + restart: unless-stopped + ports: + # Porta HTTP pública + - '80:80' + # Porta HTTPS pública + - '443:443' + # Porta da web do administrador + - '81:81' + environment: + # Estas são as configurações para conexão com a bd + DB_MYSQL_HOST: "db" + DB_MYSQL_PORT: 3306 + DB_MYSQL_USER: "npm" + # DB_MYSQL_PASSWORD: "npm" # use secrets ao invés disso + DB_MYSQL_PASSWORD__FILE: /run/secrets/MYSQL_PWD + DB_MYSQL_NAME: "npm" + # Se preferir usar Sqlite, remova todas as linhas DB_MYSQL_* acima + # Descomente isto se IPv6 não estiver ativado em seu host + # DISABLE_IPV6: 'true' + volumes: + - ./data:/data + - ./letsencrypt:/etc/letsencrypt + secrets: + - MYSQL_PWD + depends_on: + - db + + db: + image: jc21/mariadb-aria + restart: unless-stopped + environment: + # MYSQL_ROOT_PASSWORD: "npm" # use secrets ao invés disso + MYSQL_ROOT_PASSWORD__FILE: /run/secrets/DB_ROOT_PWD + MYSQL_DATABASE: "npm" + MYSQL_USER: "npm" + # MYSQL_PASSWORD: "npm" # use secrets ao invés disso + MYSQL_PASSWORD__FILE: /run/secrets/MYSQL_PWD + volumes: + - ./data/mysql:/var/lib/mysql + secrets: + - DB_ROOT_PWD + - MYSQL_PWD +``` + + +## Desabilitando o IPv6 + +Em alguns hosts Docker, o IPv6 não pode estar ativado. Nesses casos, a seguinte mensagem pode ser vista no log: + +> Address family not supported by protocol + +A forma mais fácil de resolver isso é adicionar uma variável de ambiente do docker à stack do Nginx Proxy Manager: + +```yml + environment: + DISABLE_IPV6: 'true' +``` + + +## Configurações personalizadas do NGINX + +Se você é um usuário mais avançado, pode estar procurando pela personalização extra do NGINX. + +O Nginx Proxy Manager tem a capacidade de incluir diferentes trechos de configuração personalizados em diferentes lugares. + +Você pode adicionar seus arquivos de snippet de configuração personalizados em `/data/nginx/custom` como apresentado a seguir: + + - `/data/nginx/custom/root.conf`: Incluído no final do nginx.conf + - `/data/nginx/custom/http_top.conf`: Incluído no topo do bloco HTTP principal + - `/data/nginx/custom/http.conf`: Incluído no final do bloco HTTP principal + - `/data/nginx/custom/events.conf`: Incluído no final do bloco de eventos + - `/data/nginx/custom/stream.conf`: Incluído no final do bloco de stream principal + - `/data/nginx/custom/server_proxy.conf`: Incluído no final de cada bloco de proxy do servidor + - `/data/nginx/custom/server_redirect.conf`: Incluído no final de cada bloco de redirecionamento do servidor + - `/data/nginx/custom/server_stream.conf`: Incluído no final de cada bloco de stream do servidor + - `/data/nginx/custom/server_stream_tcp.conf`: Incluído no final de cada bloco de TCP stream do servidor + - `/data/nginx/custom/server_stream_udp.conf`: Incluído no final de cada bloco de UDP stream do servidor + +Cada arquivo é opcional. + + +## Header X-FRAME-OPTIONS + +Você pode configurar o valor do header [`X-FRAME-OPTIONS`](https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Headers/X-Frame-Options) especificando-o como uma variável de ambiente do Docker. O padrão, se não especificado é `deny`. + +```yml + ... + environment: + X_FRAME_OPTIONS: "sameorigin" + ... +``` diff --git a/docs/pt/guia/README.md b/docs/pt/guia/README.md new file mode 100644 index 00000000..4689b225 --- /dev/null +++ b/docs/pt/guia/README.md @@ -0,0 +1,112 @@ +

+ +

+ + + + + + + +

+ +Este projeto vem como uma imagem docker pré-criada que permite que você encaminhe facilmente para seus sites +executando em casa ou não, incluindo SSL grátis, sem ter que saber muito sobre Nginx ou Letsencrypt. + +- [Configuração Rápida](#configuracao-rapida) +- [Configuração Completa](https://nginxproxymanager.com/pt/inicio) +- [Capturas](https://nginxproxymanager.com/pt/capturas) + +## Objectivo do Projecto + +Eu criei este projeto para preencher uma necessidade pessoal de fornecer aos usuários uma maneira fácil de realizar +proxy de hosts com terminação SSL e tinha que ser tão fácil que um macaco poderia fazê-lo. Este objetivo não mudou. +Embora possa haver opções avançadas, elas são opcionais e o projeto deve ser o mais simples possível +de modo que a barreira de entrada aqui é baixa. + +Buy Me A Coffee + + +## Funcionalidades + +- UI atrativa e segura, baseada em [Tabler](https://tabler.github.io/) +- Crie facilmente domínios de encaminhamento, redirecionamentos, streams e hosts 404 sem saber nada sobre Nginx +- SSL grátis usando o Let's Encrypt ou forneça seu próprio certificado personalizado +- Listas de Acesso e autenticação HTTP básica para os seus hosts +- Configurações avançadas do Nginx disponíveis para super usuários +- Gestão de usuários, permissões e auditoria de log + + +## Hospedando sua rede doméstica + +Não vou entrar em muitos detalhes aqui, mas aqui estão os princípios básicos para alguém novo neste mundo auto-hospedado. + +1. Seu roteador doméstico terá uma seção de encaminhamento de porta em algum lugar. Acesse e encontre +2. Adicione o encaminhamento de porta para as portas 80 e 443 ao servidor que hospeda este projeto +3. Configure os detalhes do seu domínio para apontar para a home, seja com um ip estático ou um serviço como DuckDNS ou [Amazon Route53](https://github.com/jc21/route53-ddns) +4. Use o Nginx Proxy Manager como seu gateway para encaminhar para seus outros serviços baseados na web + + +## Configuração Rápida + +1. Instale o Docker e o Docker-Compose + +- [Documentação para a instalação do Docker](https://docs.docker.com/install/) +- [Documentação para a instalação do Docker-Compose](https://docs.docker.com/compose/install/) + +2. Crie o arquivo `docker-compose.yml` semelhante a: + +```yml +version: '3.8' +services: + app: + image: 'jc21/nginx-proxy-manager:latest' + restart: unless-stopped + ports: + - '80:80' + - '81:81' + - '443:443' + volumes: + - ./data:/data + - ./letsencrypt:/etc/letsencrypt +``` + +Este é o mínimo de configuração obrigatória. Veja a [documentação](https://nginxproxymanager.com/pt/inicio/) para mais. + +3. Levante a sua stack rodando: + +```bash +docker-compose up -d + +# Se estiver usando docker-compose-plugin +docker compose up -d + +``` + +4. Faça login na Web UI de Admin + +Quando o container do Docker estiver em execução, conecte-se a ele na porta `81` para a UI de Admin. +Às vezes isso pode demorar um pouco por causa da geração das chaves. + +[http://127.0.0.1:81](http://127.0.0.1:81) + +Usuário Admin padrão: +``` +Email: admin@example.com +Senha: changeme +``` + +Logo após o login com este usuário padrão, você será solicitado a modificar seus dados e alterar sua senha. + + +## Contribuidores + +Especiais agradecimentos a [todos os nossos contribuidores](https://github.com/NginxProxyManager/nginx-proxy-manager/graphs/contributors). + + +## Suporte + +1. [Encontrou um bug?](https://github.com/NginxProxyManager/nginx-proxy-manager/issues) +2. [Discussões](https://github.com/NginxProxyManager/nginx-proxy-manager/discussions) +3. [Comunidade Gitter](https://gitter.im/nginx-proxy-manager/community) +4. [Reddit](https://reddit.com/r/nginxproxymanager) diff --git a/docs/pt/inicio/README.md b/docs/pt/inicio/README.md new file mode 100644 index 00000000..075da875 --- /dev/null +++ b/docs/pt/inicio/README.md @@ -0,0 +1,133 @@ +# Início + +## Rodando a aplicação + +Crie o arquivo `docker-compose.yml`: + +```yml +version: '3.8' +services: + app: + image: 'jc21/nginx-proxy-manager:latest' + restart: unless-stopped + ports: + # Essas portas são no formato : + - '80:80' # Porta HTTP pública + - '443:443' # Porta HTTPS pública + - '81:81' # Porta da web do administrador + # Adicione qualquer outra porta que você deseja expor + # - '21:21' # FTP + + # Descomente a próxima linha se você não declarar alguma coisa na seção + # environment: + # Descomente isso se você quiser mudar a localização do + # arquivo SQLite DB dentro do container + # DB_SQLITE_FILE: "/data/database.sqlite" + + # Descomente isto se IPv6 não estiver ativado em seu host + # DISABLE_IPV6: 'true' + + volumes: + - ./data:/data + - ./letsencrypt:/etc/letsencrypt +``` + +Então, rode: + +```bash +docker-compose up -d +``` + +## Usando o banco de dados MySQL / MariaDB + +Se você optar pela configuração do MySQL, precisará fornecer o servidor de banco de dados. Você também pode usar o MariaDB. Aqui estão as versões mínimas suportadas: + +- MySQL v5.7.8+ +- MariaDB v10.2.7+ + +É fácil usar outro container docker para o seu banco de dados e vinculá-lo como parte da stack do Docker, e é isso que o seguinte exemplo mostra. + +Aqui está um exemplo de como será o seu `docker-compose.yml` usando um container MariaDB + +```yml +version: '3.8' +services: + app: + image: 'jc21/nginx-proxy-manager:latest' + restart: unless-stopped + ports: + # Essas portas são no formato : + - '80:80' # Porta HTTP pública + - '443:443' # Porta HTTPS pública + - '81:81' # Porta da web do administrador + # Adicione qualquer outra porta que você deseja expor + # - '21:21' # FTP + environment: + # Parâmetros de conexão MySQL/MariaDB: + DB_MYSQL_HOST: "db" + DB_MYSQL_PORT: 3306 + DB_MYSQL_USER: "npm" + DB_MYSQL_PASSWORD: "npm" + DB_MYSQL_NAME: "npm" + # Descomente isto se IPv6 não estiver ativado em seu host + # DISABLE_IPV6: 'true' + volumes: + - ./data:/data + - ./letsencrypt:/etc/letsencrypt + depends_on: + - db + + db: + image: 'jc21/mariadb-aria:latest' + restart: unless-stopped + environment: + MYSQL_ROOT_PASSWORD: 'npm' + MYSQL_DATABASE: 'npm' + MYSQL_USER: 'npm' + MYSQL_PASSWORD: 'npm' + volumes: + - ./mysql:/var/lib/mysql +``` + +::: warning + +Observe que as variáveis de ambiente `DB_MYSQL_*` terão precedência sobre as variáveis `DB_SQLITE_*`. Portanto, se você mantiver as variáveis MySQL, não poderá usar o SQLite. + +::: + +## Rodando em dispositivos Raspberry PI / ARM + +As imagens do Docker suportam as seguintes arquiteturas: +- amd64 +- arm64 +- armv7 + +As imagens do Docker são um manifesto de todas as compilações do Docker de arquiteturas suportadas, então isso significa que você não precisa se preocupar em fazer nada de especial e pode seguir as instruções comuns acima. + +Dê uma olhada nas [tags no dockerhub](https://hub.docker.com/r/jc21/nginx-proxy-manager/tags) +para uma lista de arquiteturas suportadas e se você quiser uma que não existe, +[crie um feature request](https://github.com/NginxProxyManager/nginx-proxy-manager/issues/new?assignees=&labels=enhancement&template=feature_request.md&title=). + +Além disso, se você ainda não sabe, siga [este guia para instalar o docker e o docker-compose](https://manre-universe.net/how-to-run-docker-and-docker-compose-on-raspbian/) +em Raspbian. + +Note que a imagem `jc21/mariadb-aria:latest` poderá apresentar alguns problemas em aguns dispositivos ARM, se você quiser separar o container do banco de dados, use a imagem `yobasystems/alpine-mariadb:latest`. + +## Execução inicial + +Depois que o aplicativo estiver a rodar pela primeira vez, o seguinte acontecerá: + +1. As chaves GPG serão geradas e salvas na pasta data +2. O banco de dados inicializará com as tabelas estruturadas +3. Um usuário administrador padrão será criado + +Esse processo pode levar alguns minutos, dependendo da sua máquina. + +## Usuário do Administrador Padrão + +``` +Email: admin@example.com +Senha: changeme +``` + +Após o login com esse usuário padrão, você será solicitado a modificar seus detalhes e alterar sua senha... diff --git a/docs/pt/perguntas-frequentes/README.md b/docs/pt/perguntas-frequentes/README.md new file mode 100644 index 00000000..9642049b --- /dev/null +++ b/docs/pt/perguntas-frequentes/README.md @@ -0,0 +1,22 @@ +# Perguntas Frequentes + +## Eu tenho que usar Docker? + +Sim, é assim que o projecto foi montado. + +Isso facilita o suporte ao projeto quando tenho controle sobre a versão do Nginx e do NodeJS que está sendo usada. No futuro, isso pode mudar se o back-end não estiver mais usando o NodeJS e sua longa lista de dependências. + +## Posso rodar em Raspberry Pi? + +Sim! A imagem do docker é multi-arquitetura e é construída para uma variedade de arquiteturas. Se a sua [não está listada](https://hub.docker.com/r/jc21/nginx-proxy-manager/tags) por favor, abra +[GitHub issue](https://github.com/jc21/nginx-proxy-manager/issues/new?assignees=&labels=enhancement&template=feature_request.md&title=). + +## Não consigo que os meus serviços sejam proxies correctamente? + +Sua melhor aposta é pedir ajuda [à comunidade do Reddit](https://www.reddit.com/r/nginxproxymanager/). Há segurança nos números. + +O Gitter é melhor deixado para qualquer pessoa que contribua com o projeto para pedir ajuda sobre internos, revisões de código, etc. + +## Ao adicionar o controle de acesso com username e senha a um proxy host, não consigo mais fazer login no aplicativo + +Ter uma Lista de Controle de Acesso (ACL) com o username e senha exige que o navegador sempre envie esse username e senha no cabeçalho `Authorization` em cada solicitação. Se seu aplicativo proxy também exigir autenticação (como o próprio Nginx Proxy Manager), provavelmente o aplicativo também usará o cabeçalho `Authorization` para transmitir essas informações, pois esse é o cabeçalho padronizado destinado a esse tipo de informação. No entanto, ter vários do mesmo cabeçalhos não é permitido no [padrão da Internet](https://www.rfc-editor.org/rfc/rfc7230#section-3.2.2) e quase todos os aplicativos não oferecem suporte a vários valores no cabeçalho `Authorization`. Portanto, um dos dois logins será interrompido. Isso só pode ser corrigido removendo um dos logins ou alterando o aplicativo para usar outros cabeçalhos não padrão para autorização.