Sign inSign up

albiesek/lista-telefonica

By albiesek

Updated 8 months ago

Agenda/Lista Telefônica com PHP, JavaScript e MariaDB/Mysql usando docker

Image
Web servers
0

10K+

albiesek/lista-telefonica repository overview

Aplicação de Lista Telefônica (v0.16)

Bem-vindo ao repositório da aplicação de lista telefônica desenvolvida para órgãos públicos. Esta ferramenta fornece uma interface intuitiva, responsiva e segura para gerenciar contatos e ramais internos.

Destaque da Versão 0.16:

  • 🚀 Instalação Automática: O sistema cria o banco e importa as tabelas automaticamente no primeiro acesso (inclusive no Docker).
  • 🛡️ Segurança Reforçada: Implementação de Rate Limit (proteção contra força bruta) e Cloudflare Turnstile (Captcha).
  • ⚙️ Configuração Centralizada: Todas as regras de acesso (IP) e chaves de segurança geridas em um único arquivo ou variáveis de ambiente.
  • Favoritos: Possibilidade de favoritar contatos (salvos localmente no navegador).
  • 📊 Dashboard: Gráficos de estatísticas de acesso e distribuição de ramais.

Índice

Requisitos de Software

  • Docker & Docker Compose (para instalação via container).
  • OU PHP 8.1+, MariaDB 10.6+, Apache 2.4+ (para instalação manual).

Instalação via Docker (via repositório)

A versão 0.16 foi otimizada para containers. O processo é "Zero-Touch": ao subir o container, o banco de dados é criado e populado automaticamente.

  1. Crie uma pasta em seu servidor chamada lista-telefonica e acesse a pasta criada
mkdir lista-telefonica
cd lista-telefonica
  1. Crie um arquivo chamado docker-compose.yml e insira nele o conteudo abaixo:
nano dcoker-compose.yml

Cole este conteudo, edite as variáveis DB_USERNAME, DB_PASSWORD, CF_SITE_KEY, CF_SECRET_KEY, NOME_ORGAO, RESTRITO_POR_IP, FAIXA_IP_PERMITIDA (as variáveis do banco dedados na seção APP e no db_agenda devem ser iguais) e salve o arquivo:

services:
  app:
    image: albiesek/lista-telefonica:latest
    container_name: lista-telefonica
    restart: always
    ports:
      - "8080:80"
    environment:
      # Dados de acesso ao banco de dados (devem ser os mesmos configurados na seção do banco mais abaixo.
      - DB_SERVER=db_agenda
      - DB_NAME=agenda
      - DB_USERNAME=admin
      - DB_PASSWORD=admin
      # Chaves da configuração do captcha do Cloudflare Turnstile (pode ser configurado gratuitamente em: https://www.cloudflare.com/pt-br/application-services/products/turnstile/)
      - CF_SITE_KEY=
      - CF_SECRET_KEY=
      # Configuração do nome do órgão
      - NOME_ORGAO=PREFEITURA DA CIDADE TAL
      # Configuração para restringir o acesso ao Painel Administrativo apenas para a rede interna (Intranet).
      - RESTRITO_POR_IP=false
      - FAIXA_IP_PERMITIDA=127.0.0.*
    depends_on:
      - db_agenda
    networks:
      - agenda_net
    volumes:
      - ./img:/var/www/html/img

  db_agenda:
    image: mysql:8.0
    container_name: db_agenda
    restart: always
    environment:
      # Dados de acesso ao banco de dados (devem ser os mesmos da seção APP, com excessão do root)
      MYSQL_DATABASE: agenda
      MYSQL_USER: admin
      MYSQL_PASSWORD: admin
      MYSQL_ROOT_PASSWORD: admin123
    volumes:
      - db_data:/var/lib/mysql
    networks:
      - agenda_net

networks:
  agenda_net:
    driver: bridge

volumes:
  db_data:
  1. Suba o container e inclua suas imagens próprias na pasta img criada.
sudo docker compose up -d

ou

sudo docker-compose up -d

Instalação via Docker (deploy com build local do container)

Acesse: https://github.com/adrianolerner/lista-telefonica-docker


Instalação Tradicional

Acesse: https://github.com/adrianolerner/lista-telefonica


Configuração Centralizada

Esqueça a edição de múltiplos arquivos. Agora, tudo é controlado via Variáveis de Ambiente ou editando apenas o arquivo config.php.

1. Variáveis de Ambiente (Environment)

As seguintes variáveis podem ser definidas no docker-compose.yml ou no .env do servidor:

VariávelDescriçãoPadrão
DB_SERVERHost do banco de dados127.0.0.1
DB_NAMENome do bancoagenda
DB_USERNAMEUsuário do bancoadmin
DB_PASSWORDSenha do bancoadmin
NOME_ORGAONome exibido no topo (Ex: PREFEITURA X)NOME DA PREFEITURA
CF_SITE_KEYChave pública do Cloudflare Turnstile(Vazio)
CF_SECRET_KEYChave secreta do Cloudflare Turnstile(Vazio)
RESTRITO_POR_IPAtiva ou desativa a validação de IP para acesso ao painel administrativofalse
FAIXA_IP_PERMITIDAConfigura a faixa de IPs permitidas quando o item RESTRITO_POR_IP for true127.0.0.*

Segurança e Captcha

O sistema possui proteção contra ataques de força bruta (bloqueia o IP após 5 tentativas falhas) e integração opcional com Cloudflare Turnstile.

Ativando o Captcha

Para ativar o Captcha no login, basta preencher as variáveis de ambiente CF_SITE_KEY e CF_SECRET_KEY no seu docker-compose.yml.

  • Ativação Automática: Se as chaves estiverem preenchidas, o Captcha aparece.
  • Desativação Automática: Se as variáveis estiverem vazias, o Captcha é desabilitado.
  • Modo Desenvolvedor: Se você acessar via localhost ou IPs locais (127.0.0.1), o Captcha é ignorado automaticamente para facilitar testes, exibindo apenas um alerta visual.

Uso

  • Acesso Padrão:

  • Usuário: admin

  • Senha: admin

  • Nota: Altere a senha imediatamente no menu Usuários.

  • Recursos:

  • Dashboard: /dashboard.php - Estatísticas de acesso.

  • Favoritos: Clique na estrela (⭐) para fixar contatos no topo.

  • PDF: Gere a lista telefônica impressa em /gerapdf.php.

Interface e Temas

A aplicação utiliza o Bootstrap 5.3 e oferece:

  • Dark Mode / Light Mode: Alternância de tema com persistência local.
  • Responsividade: Tabela adaptável para dispositivos móveis.

Contribuição

  1. Faça um Fork do projeto.
  2. Crie uma Branch (git checkout -b feature/melhoria-x).
  3. Faça o Commit (git commit -am 'Adiciona melhoria X').
  4. Push para a branch (git push origin feature/melhoria-x).
  5. Abra um Pull Request.

Referências


Desenvolvido para agilizar a comunicação no serviço público.

Tag summary

Content type

Image

Digest

sha256:7b5827ceb

Size

208.1 MB

Last updated

8 months ago

docker pull albiesek/lista-telefonica