Escolha seu nome
++ Indique o subdomínio que quer usar — por exemplo, + minha-empresa.n8ngo.host. + É o seu espaço, com sua identidade. +
+diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..7bdc5b6 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,8 @@ +.git +.gitea +.gitignore +README.md +build.sh +instruction.txt +n8ngo/ +kvmote/ diff --git a/.gitea/workflows/deploy-kvmote.yml b/.gitea/workflows/deploy-kvmote.yml new file mode 100644 index 0000000..77681c3 --- /dev/null +++ b/.gitea/workflows/deploy-kvmote.yml @@ -0,0 +1,90 @@ +name: Build and Deploy KVMote Landing Page + +on: + push: + branches: [ main ] + paths: + - 'kvmote/**' + - '.gitea/workflows/deploy-kvmote.yml' + +env: + REGISTRY: registry.redecarneir.us + IMAGE_NAME: kvmote-landing + DEPLOY_HOST: 92.246.130.58 + DEPLOY_USER: root + CONTAINER_NAME: kvmote-landing + CONTAINER_PORT: 8085 + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Generate tags + id: meta + run: | + echo "LATEST_TAG=${REGISTRY}/${IMAGE_NAME}:latest" >> $GITHUB_OUTPUT + echo "VERSION_TAG=${REGISTRY}/${IMAGE_NAME}:$(date +%Y%m%d)-${GITHUB_SHA::8}" >> $GITHUB_OUTPUT + + - name: Build Docker image + run: | + docker build \ + -t ${{ steps.meta.outputs.LATEST_TAG }} \ + -t ${{ steps.meta.outputs.VERSION_TAG }} \ + ./kvmote + + - name: Test container + run: | + docker run -d --name test-kvmote -p 8098:80 ${{ steps.meta.outputs.LATEST_TAG }} + sleep 5 + docker exec test-kvmote wget -qO- http://localhost/ > /dev/null && echo "OK" + docker stop test-kvmote && docker rm test-kvmote + + - name: Push to registry + run: | + docker push ${{ steps.meta.outputs.LATEST_TAG }} + docker push ${{ steps.meta.outputs.VERSION_TAG }} + + deploy: + needs: build + runs-on: ubuntu-latest + if: github.ref == 'refs/heads/main' + + steps: + - name: Setup SSH + run: | + mkdir -p ~/.ssh + echo "${{ secrets.DEPLOY_SSH_KEY }}" > ~/.ssh/id_rsa + chmod 600 ~/.ssh/id_rsa + ssh-keyscan -H ${{ env.DEPLOY_HOST }} >> ~/.ssh/known_hosts + + - name: Deploy to server + run: | + ssh ${{ env.DEPLOY_USER }}@${{ env.DEPLOY_HOST }} << 'EOF' + set -e + docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest + docker stop ${{ env.CONTAINER_NAME }} || true + docker rm ${{ env.CONTAINER_NAME }} || true + docker run -d \ + --name ${{ env.CONTAINER_NAME }} \ + --restart unless-stopped \ + -p ${{ env.CONTAINER_PORT }}:80 \ + ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest + sleep 5 + curl -f http://localhost:${{ env.CONTAINER_PORT }}/ || exit 1 + docker image prune -f + echo "Deploy kvmote OK" + EOF + + - name: Verify deployment + run: | + ssh ${{ env.DEPLOY_USER }}@${{ env.DEPLOY_HOST }} << 'EOF' + docker ps | grep ${{ env.CONTAINER_NAME }} + docker logs --tail 10 ${{ env.CONTAINER_NAME }} + EOF diff --git a/.gitea/workflows/deploy-n8ngo.yml b/.gitea/workflows/deploy-n8ngo.yml new file mode 100644 index 0000000..aebc138 --- /dev/null +++ b/.gitea/workflows/deploy-n8ngo.yml @@ -0,0 +1,90 @@ +name: Build and Deploy n8ngo Landing Page + +on: + push: + branches: [ main ] + paths: + - 'n8ngo/**' + - '.gitea/workflows/deploy-n8ngo.yml' + +env: + REGISTRY: registry.redecarneir.us + IMAGE_NAME: n8ngo-landing + DEPLOY_HOST: 92.246.130.58 + DEPLOY_USER: root + CONTAINER_NAME: n8ngo-landing + CONTAINER_PORT: 8084 + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Generate tags + id: meta + run: | + echo "LATEST_TAG=${REGISTRY}/${IMAGE_NAME}:latest" >> $GITHUB_OUTPUT + echo "VERSION_TAG=${REGISTRY}/${IMAGE_NAME}:$(date +%Y%m%d)-${GITHUB_SHA::8}" >> $GITHUB_OUTPUT + + - name: Build Docker image + run: | + docker build \ + -t ${{ steps.meta.outputs.LATEST_TAG }} \ + -t ${{ steps.meta.outputs.VERSION_TAG }} \ + ./n8ngo + + - name: Test container + run: | + docker run -d --name test-n8ngo -p 8099:80 ${{ steps.meta.outputs.LATEST_TAG }} + sleep 5 + docker exec test-n8ngo wget -qO- http://localhost/ > /dev/null && echo "OK" + docker stop test-n8ngo && docker rm test-n8ngo + + - name: Push to registry + run: | + docker push ${{ steps.meta.outputs.LATEST_TAG }} + docker push ${{ steps.meta.outputs.VERSION_TAG }} + + deploy: + needs: build + runs-on: ubuntu-latest + if: github.ref == 'refs/heads/main' + + steps: + - name: Setup SSH + run: | + mkdir -p ~/.ssh + echo "${{ secrets.DEPLOY_SSH_KEY }}" > ~/.ssh/id_rsa + chmod 600 ~/.ssh/id_rsa + ssh-keyscan -H ${{ env.DEPLOY_HOST }} >> ~/.ssh/known_hosts + + - name: Deploy to server + run: | + ssh ${{ env.DEPLOY_USER }}@${{ env.DEPLOY_HOST }} << 'EOF' + set -e + docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest + docker stop ${{ env.CONTAINER_NAME }} || true + docker rm ${{ env.CONTAINER_NAME }} || true + docker run -d \ + --name ${{ env.CONTAINER_NAME }} \ + --restart unless-stopped \ + -p ${{ env.CONTAINER_PORT }}:80 \ + ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest + sleep 5 + curl -f http://localhost:${{ env.CONTAINER_PORT }}/ || exit 1 + docker image prune -f + echo "Deploy n8ngo OK" + EOF + + - name: Verify deployment + run: | + ssh ${{ env.DEPLOY_USER }}@${{ env.DEPLOY_HOST }} << 'EOF' + docker ps | grep ${{ env.CONTAINER_NAME }} + docker logs --tail 10 ${{ env.CONTAINER_NAME }} + EOF diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index f51aaa2..2299df0 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -4,8 +4,14 @@ name: Build and Deploy JobMaker on: push: branches: [ main ] + paths-ignore: + - 'n8ngo/**' + - 'kvmote/**' pull_request: branches: [ main ] + paths-ignore: + - 'n8ngo/**' + - 'kvmote/**' env: REGISTRY: registry.redecarneir.us diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c23d97c --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/.claude diff --git a/kvmote/Dockerfile b/kvmote/Dockerfile new file mode 100644 index 0000000..68c4033 --- /dev/null +++ b/kvmote/Dockerfile @@ -0,0 +1,12 @@ +FROM nginx:alpine + +RUN rm /etc/nginx/conf.d/default.conf + +COPY nginx.conf /etc/nginx/conf.d/default.conf +COPY index.html /usr/share/nginx/html/index.html +COPY quadrinhos_kvmote.png /usr/share/nginx/html/quadrinhos_kvmote.png + +EXPOSE 80 + +HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \ + CMD wget -qO- http://localhost/ || exit 1 diff --git a/kvmote/index.html b/kvmote/index.html new file mode 100644 index 0000000..67e47b9 --- /dev/null +++ b/kvmote/index.html @@ -0,0 +1,807 @@ + + +
+ + ++ KVMote deixa você controlar dois computadores com o mesmo teclado e mouse — sem software no PC cliente, sem assinatura, sem fio entre as máquinas. +
+ Quero ser notificado quando lançar → +
+ + O KVMote aparece para o Windows como um periférico USB padrão — sem alertas de segurança, sem driver para instalar, sem aprovação do TI. + Funciona em qualquer PC: corporativo bloqueado, notebook pessoal, máquina de trabalho remoto. + Para o sistema operacional, é só mais um teclado plugado. +
+O PC cliente enxerga apenas um teclado + mouse USB padrão. Funciona em Windows corporativo bloqueado, sem instalar nada.
+Comunicação por BLE (Bluetooth Low Energy). Sem cabos entre os PCs, sem configuração de rede, sem IP.
+Copie no host, cole no cliente com Ctrl+V. Suporte a PT-BR com acentos e múltiplos layouts de teclado.
+Dispositivo pequeno e discreto baseado em ESP32-S3. Sem drivers proprietários, sem dongles extras.
+Plugue o dispositivo KVMote na porta USB do PC cliente. Nenhum driver necessário.
+Execute o KVMote.exe no seu PC principal. Detecção automática via BLE — sem parear manualmente.
+Empurre o mouse para a borda configurada e o controle migra para o outro PC. Simples assim.
++ O preço final depende do feedback de vocês. Responda o formulário abaixo e ajude a definir. +
++ Se validarmos que o produto vale a pena para vocês, vamos sortear + 2 unidades do hardware KVMote entre todos que se inscreverem com um email válido. + Sem pegadinha. Quem se inscrever no formulário abaixo já está participando. +
+Preencha abaixo para participar do sorteio e nos ajudar a definir o produto. Leva menos de 1 minuto.
++ Hospedagem managed de n8n com backup automático, monitoramento 24/7 + e subdomínio pronto. Você cria os fluxos, nós cuidamos do resto. +
+ + + ++ Do zero ao n8n rodando em produção em três passos. Sem linha de comando, sem dor de cabeça. +
+ ++ Indique o subdomínio que quer usar — por exemplo, + minha-empresa.n8ngo.host. + É o seu espaço, com sua identidade. +
++ Subimos o n8n, configuramos banco de dados, SSL, DNS, Uptime Kuma + e os backups automáticos. Você não precisa tocar em nada. +
++ Acesse seu painel n8n, crie seus fluxos e deixe a automação + trabalhar por você. 24 horas por dia, 7 dias por semana. +
++ Cada instância n8ngo vem com uma stack completa pronta para produção. +
+ +Última versão estável do n8n, configurado e otimizado para performance. Atualizações gerenciadas por nós.
+seudominio.n8ngo.host com SSL/TLS configurado. Agências podem ter sub-subdomínios para cada cliente.
+Backup diário dos fluxos + backup completo semanal. Painel de acesso para restauração quando precisar.
+Uptime Kuma integrado monitorando sua instância continuamente. Alertas por email em caso de queda.
+Gerencie múltiplos clientes com sub-subdomínios dedicados: cliente.agencia.n8ngo.host.
+Servidores em São Paulo. Conformidade com a LGPD. Seus dados e os dos seus clientes ficam aqui.
++ Você pode configurar tudo sozinho. Mas será que faz sentido? +
+ +| Recurso | +VPS + n8n manual | +n8n Cloud | +n8ngo | +
|---|---|---|---|
| Setup inicial | +Você configura tudo | +Automático | +Automático | +
| Subdomínio próprio | +Você configura DNS | +✕ Não disponível | +✓ Incluso | +
| Backup de fluxos | +Você configura | +Limitado | +✓ Diário + semanal | +
| Monitoramento | +Você instala | +Básico | +✓ Uptime Kuma integrado | +
| Alertas de queda | +Você configura | +✓ Email automático | +|
| Modelo Agência | +✕ Não | +✕ Não | +✓ Sub-subdomínios | +
| Execuções | +Ilimitadas | +Por plano | +✓ Ilimitadas | +
| Dados no Brasil | +Depende do servidor | +✕ Não | +✓ São Paulo, LGPD | +
| Preço | +R$20–80/mês + seu tempo | +A partir de €24/mês | +A definir* | +
+ * Estamos em fase de validação. Você pode influenciar o preço final no formulário de pré-cadastro. +
+ ++ O n8n é open source e você pode rodá-lo gratuitamente no seu computador. + Aqui está como fazer isso agora mesmo. +
+ ++ O n8n pertence à n8n GmbH e é distribuído gratuitamente com código aberto. + Se você só quer explorar a ferramenta ou automatizar processos locais, não + precisa pagar nada — use o Docker e rode em qualquer máquina: +
+ +docker run -it --rm -p 5678:5678 n8nio/n8n
+
+ localhost:5678
+ no navegador. Pronto — n8n funcionando.
+
+ + Documentação oficial do n8n: + docs.n8n.io → +
+ ++ Quando quiser colocar em produção 24/7 com backup automático e monitoramento real, + estaremos aqui — sem julgamentos. 😉 +
++ Estamos em fase de validação. Cadastre-se e ajude a moldar o n8ngo — + sua opinião define o preço e as funcionalidades do produto final. +
+