Update / Agora Esta mais Serio

This commit is contained in:
João Pedro Toledo Goncalves 2025-09-16 21:34:14 +00:00
parent 10617775df
commit d57920afa6
1 changed files with 159 additions and 73 deletions

View File

@ -1,11 +1,11 @@
#!/bin/bash #!/bin/bash
# ============================================================================== # ==============================================================================
# INSTALADOR DO SERVIÇO PROXY-SINC (VERSÃO AVANÇADA) # INSTALADOR DO SERVIÇO PROXY-SINC (VERSÃO PROFISSIONAL)
# #
# Autor: A sua IA Assistente & Equipa de Infraestrutura iT Guys # Autor: A sua IA Assistente & Equipa de Infraestrutura iT Guys
# Descrição: Instala e configura o serviço de versionamento automático, com # Descrição: Instala e configura um serviço de versionamento robusto e
# autenticação por Token, gestão de SSL e identidade de commit automática. # auto-documentado para configurações de servidor.
# ============================================================================== # ==============================================================================
set -e set -e
@ -15,6 +15,9 @@ REPO_DIR="/opt/config_repo"
SCRIPT_INSTALL_DIR="/usr/local/sbin" SCRIPT_INSTALL_DIR="/usr/local/sbin"
SYSTEMD_DIR="/etc/systemd/system" SYSTEMD_DIR="/etc/systemd/system"
MAN_DIR="/usr/share/man/man8" MAN_DIR="/usr/share/man/man8"
CONFIG_DIR="/etc/proxy-sinc"
PATHS_FILE="${CONFIG_DIR}/paths.conf"
UPDATE_REPO_URL="https://git.itguys.com.br/joao.goncalves/NgixProxy_Pathfinder.git" # URL para o script de atualização
# --- Funções de Ajuda --- # --- Funções de Ajuda ---
info() { echo -e "\e[32m[INFO]\e[0m $1"; } info() { echo -e "\e[32m[INFO]\e[0m $1"; }
@ -22,7 +25,7 @@ error() { echo -e "\e[31m[ERRO]\e[0m $1" >&2; exit 1; }
warn() { echo -e "\e[33m[AVISO]\e[0m $1"; } warn() { echo -e "\e[33m[AVISO]\e[0m $1"; }
# --- Início da Execução --- # --- Início da Execução ---
info "Iniciando a instalação do serviço Proxy-Sinc..." info "Iniciando a instalação/atualização do serviço Proxy-Sinc..."
if [ "$EUID" -ne 0 ]; then if [ "$EUID" -ne 0 ]; then
error "Este script precisa de ser executado como root." error "Este script precisa de ser executado como root."
@ -37,35 +40,45 @@ info "Dependências satisfeitas."
# --- 2. Configuração das Credenciais e do Repositório --- # --- 2. Configuração das Credenciais e do Repositório ---
info "Configurando a autenticação para o Gitea..." info "Configurando a autenticação para o Gitea..."
# Pede as informações ao utilizador
read -p "Por favor, insira a URL HTTP ou HTTPS do seu repositório Gitea: " GIT_URL read -p "Por favor, insira a URL HTTP ou HTTPS do seu repositório Gitea: " GIT_URL
read -p "Por favor, insira o seu NOME DE UTILIZADOR do Gitea: " GITEA_USERNAME read -p "Por favor, insira o seu NOME DE UTILIZADOR do Gitea: " GITEA_USERNAME
read -s -p "Por favor, insira o seu TOKEN DE ACESSO do Gitea (ficará oculto): " GITEA_TOKEN read -s -p "Por favor, insira o seu TOKEN DE ACESSO do Gitea (ficará oculto): " GITEA_TOKEN
echo "" echo ""
read -p "O seu servidor Gitea usa um certificado SSL auto-assinado ou inválido? (s/n): " SSL_VERIFY_CHOICE
# Verifica se os campos foram preenchidos
if [ -z "$GIT_URL" ] || [ -z "$GITEA_USERNAME" ] || [ -z "$GITEA_TOKEN" ]; then if [ -z "$GIT_URL" ] || [ -z "$GITEA_USERNAME" ] || [ -z "$GITEA_TOKEN" ]; then
error "Todos os campos (URL, Utilizador, Token) são obrigatórios." error "Todos os campos (URL, Utilizador, Token) são obrigatórios."
fi fi
# Extrai o protocolo e o caminho da URL para construir a nova URL com autenticação
GIT_PROTOCOL=$(echo "$GIT_URL" | grep -o '^https\?://') GIT_PROTOCOL=$(echo "$GIT_URL" | grep -o '^https\?://')
GIT_DOMAIN_PATH=$(echo "$GIT_URL" | sed -e 's|https\?://||') GIT_DOMAIN_PATH=$(echo "$GIT_URL" | sed -e 's|https\?://||')
AUTH_GIT_URL="${GIT_PROTOCOL}${GITEA_USERNAME}:${GITEA_TOKEN}@${GIT_DOMAIN_PATH}" AUTH_GIT_URL="${GIT_PROTOCOL}${GITEA_USERNAME}:${GITEA_TOKEN}@${GIT_DOMAIN_PATH}"
# Gera a identidade para os commits automaticamente
SERVER_HOSTNAME=$(hostname -f) SERVER_HOSTNAME=$(hostname -f)
GIT_COMMIT_NAME="$SERVER_HOSTNAME" GIT_COMMIT_NAME="$SERVER_HOSTNAME"
GIT_COMMIT_EMAIL="${SERVER_HOSTNAME}@itguys.com.br" GIT_COMMIT_EMAIL="${SERVER_HOSTNAME%%.*}@itguys.com.br"
info "O autor dos commits será definido como: $GIT_COMMIT_NAME <$GIT_COMMIT_EMAIL>" info "O autor dos commits será definido como: $GIT_COMMIT_NAME <$GIT_COMMIT_EMAIL>"
# --- 3. Clonar o Repositório e Configurar --- # --- 3. Teste de Conexão SSL e Configuração do Git ---
if [ -d "$REPO_DIR" ]; then info "A testar a conexão com o Gitea..."
SSL_VERIFY="true"
if ! git -c http.sslVerify=true ls-remote "$GIT_URL" &> /dev/null; then
warn "A conexão com verificação SSL falhou. A tentar novamente sem verificação..."
if ! git -c http.sslVerify=false ls-remote "$GIT_URL" &> /dev/null; then
error "Não foi possível conectar ao repositório Git. Verifique a URL, o token e a conectividade de rede."
else
warn "Conexão bem-sucedida sem verificação SSL. O repositório será configurado para ignorar os erros de certificado."
SSL_VERIFY="false"
fi
else
info "Conexão com verificação SSL bem-sucedida."
fi
# --- 4. Clonar/Atualizar o Repositório ---
if [ -d "$REPO_DIR/.git" ]; then
warn "O diretório do repositório $REPO_DIR já existe. A reconfigurar..." warn "O diretório do repositório $REPO_DIR já existe. A reconfigurar..."
cd "$REPO_DIR" cd "$REPO_DIR"
git remote set-url origin "$AUTH_GIT_URL" git remote set-url origin "$AUTH_GIT_URL"
info "URL do remoto 'origin' atualizada com as novas credenciais." info "URL do remoto 'origin' atualizada."
else else
info "A clonar o repositório para $REPO_DIR..." info "A clonar o repositório para $REPO_DIR..."
git clone "$GIT_URL" "$REPO_DIR" git clone "$GIT_URL" "$REPO_DIR"
@ -74,69 +87,129 @@ else
git remote set-url origin "$AUTH_GIT_URL" git remote set-url origin "$AUTH_GIT_URL"
fi fi
# Configura o nome, email e verificação SSL DENTRO deste repositório
git config user.name "$GIT_COMMIT_NAME" git config user.name "$GIT_COMMIT_NAME"
git config user.email "$GIT_COMMIT_EMAIL" git config user.email "$GIT_COMMIT_EMAIL"
git config http.sslVerify "$SSL_VERIFY"
if [[ "$SSL_VERIFY_CHOICE" == "s" || "$SSL_VERIFY_CHOICE" == "S" ]]; then
info "A desativar a verificação de certificado SSL para este repositório."
git config http.sslVerify false
else
git config http.sslVerify true
fi
info "Repositório configurado com sucesso." info "Repositório configurado com sucesso."
# --- 5. Gerar Ficheiro de Deploy (se for a primeira vez) ---
DEPLOY_LOG_DIR="$REPO_DIR/_deployment_logs"
DEPLOY_LOG_FILE="${DEPLOY_LOG_DIR}/${SERVER_HOSTNAME}.md"
if [ ! -f "$DEPLOY_LOG_FILE" ]; then
info "A criar o registo de deploy inicial..."
mkdir -p "$DEPLOY_LOG_DIR"
echo "# Registo de Deploy do Proxy-Sinc" > "$DEPLOY_LOG_FILE"
echo "" >> "$DEPLOY_LOG_FILE"
echo "**Servidor:** ${SERVER_HOSTNAME}" >> "$DEPLOY_LOG_FILE"
echo "**Instalado por:** ${GITEA_USERNAME}" >> "$DEPLOY_LOG_FILE"
echo "**Data de Instalação:** $(date)" >> "$DEPLOY_LOG_FILE"
git add "$DEPLOY_LOG_FILE"
git commit -m "[Deploy] Instalação inicial do serviço de sincronização em ${SERVER_HOSTNAME}"
git push origin main
info "Registo de deploy enviado para o Gitea."
fi
# --- 4. Instalar os Ficheiros do Serviço ---
info "A instalar os ficheiros do serviço..."
# (O script commit_configs.sh é gerado aqui. Ele não precisa de alterações,
# pois o git irá ler a configuração local que acabámos de definir.)
cat > ./commit_configs.sh << 'EOF' # --- 6. Instalar os Ficheiros do Serviço ---
info "A instalar/atualizar os ficheiros do serviço..."
# Cria o diretório de configuração e o ficheiro de caminhos, se não existirem
mkdir -p "$CONFIG_DIR"
if [ ! -f "$PATHS_FILE" ]; then
info "A criar o ficheiro de caminhos padrão em $PATHS_FILE"
echo "/etc/nginx" > "$PATHS_FILE"
echo "/etc/fail2ban" >> "$PATHS_FILE"
fi
# Gera o script principal de commit
cat > "$SCRIPT_INSTALL_DIR/commit_configs.sh" << 'EOF'
#!/bin/bash #!/bin/bash
set -e set -e
REPO_PATH="/opt/config_repo" REPO_PATH="/opt/config_repo"
NGINX_SOURCE="/etc/nginx" CONFIG_DIR="/etc/proxy-sinc"
FAIL2BAN_SOURCE="/etc/fail2ban" PATHS_FILE="${CONFIG_DIR}/paths.conf"
AUTOMATION_FILES_SOURCE=("/usr/local/sbin/commit_configs.sh" "/etc/systemd/system/proxy-sinc.service" "/etc/systemd/system/proxy-sinc.timer" "/usr/share/man/man8/proxy-sinc.8.gz") AUTOMATION_FILES_SOURCE=("/usr/local/sbin/commit_configs.sh" "/usr/local/sbin/proxy-sinc-update" "/etc/systemd/system/proxy-sinc.service" "/etc/systemd/system/proxy-sinc.timer" "/usr/share/man/man8/proxy-sinc.8.gz" "${PATHS_FILE}")
AUTOMATION_FILES_DEST="$REPO_PATH/_automation_scripts/" AUTOMATION_FILES_DEST="$REPO_PATH/_automation_scripts/"
echo "--- Iniciando a verificação de sincronização de configurações [$(date)] ---"
if [ "$EUID" -ne 0 ]; then echo "ERRO CRÍTICO: O script deve ser executado como root." >&2; exit 1; fi log_info() { echo "[INFO] $1"; }
if [ ! -d "$REPO_PATH" ]; then echo "ERRO CRÍTICO: O diretório do repositório $REPO_PATH não foi encontrado." >&2; exit 1; fi
echo "[INFO] Sincronizando ficheiros de configuração..." log_info "--- Iniciando a verificação de sincronização [$(date)] ---"
rsync -avz --delete --exclude='*.swp' --exclude='*.bak' --exclude='sites-enabled/' --exclude='modules-enabled/' --exclude='/var/log/' --exclude='/var/run/' --exclude='/var/cache/' "$NGINX_SOURCE/" "$REPO_PATH/nginx/" if [ "$EUID" -ne 0 ]; then echo "[ERRO] O script deve ser executado como root." >&2; exit 1; fi
rsync -avz --delete --exclude='*.swp' --exclude='*.bak' --exclude='/var/log/' --exclude='/var/run/' "$FAIL2BAN_SOURCE/" "$REPO_PATH/fail2ban/" if [ ! -d "$REPO_PATH" ]; then echo "[ERRO] O diretório do repositório $REPO_PATH não foi encontrado." >&2; exit 1; fi
echo "[INFO] Sincronizando ficheiros de automação..."
log_info "Sincronizando ficheiros de configuração definidos em $PATHS_FILE..."
if [ ! -f "$PATHS_FILE" ]; then
echo "[AVISO] O ficheiro de caminhos $PATHS_FILE não foi encontrado. Nenhum ficheiro de configuração foi sincronizado."
else
while IFS= read -r path_to_sync || [ -n "$path_to_sync" ]; do
if [ -z "$path_to_sync" ] || [[ "$path_to_sync" =~ ^# ]]; then
continue
fi
if [ -e "$path_to_sync" ]; then
dest_name=$(basename "$path_to_sync")
log_info "A sincronizar '$path_to_sync' para '$REPO_PATH/$dest_name/'..."
rsync -avz --delete --exclude='*.swp' --exclude='*.bak' --exclude='sites-enabled/' --exclude='modules-enabled/' --exclude='/var/log/' --exclude='/var/run/' --exclude='/var/cache/' "$path_to_sync/" "$REPO_PATH/$dest_name/"
else
echo "[AVISO] O caminho '$path_to_sync' definido em $PATHS_FILE não existe. A ignorar."
fi
done < "$PATHS_FILE"
fi
log_info "Sincronizando ficheiros de automação..."
mkdir -p "$AUTOMATION_FILES_DEST" mkdir -p "$AUTOMATION_FILES_DEST"
for file in "${AUTOMATION_FILES_SOURCE[@]}"; do for file in "${AUTOMATION_FILES_SOURCE[@]}"; do
if [ -f "$file" ]; then if [ -f "$file" ]; then
rsync -aR "$file" "$AUTOMATION_FILES_DEST" rsync -aR "$file" "$AUTOMATION_FILES_DEST"
fi fi
done done
echo "[INFO] Sincronização de ficheiros concluída."
cd "$REPO_PATH" cd "$REPO_PATH"
echo "[INFO] A verificar o status do repositório Git..." log_info "A verificar o status do repositório Git..."
if [ -n "$(git status --porcelain)" ]; then if [ -n "$(git status --porcelain)" ]; then
echo "[INFO] Alterações detetadas. A preparar o commit." log_info "Alterações detetadas. A preparar o commit."
echo "[INFO] A puxar alterações do repositório remoto para evitar conflitos..." log_info "A puxar alterações do repositório remoto para evitar conflitos..."
git pull --ff-only git pull --ff-only
echo "[INFO] A adicionar alterações ao stage..." log_info "A adicionar alterações ao stage..."
git add . git add .
COMMIT_MESSAGE="[Auto-Sync] Atualização das configurações em $(hostname -f) - $(date +'%Y-%m-%d %H:%M:%S')" COMMIT_MESSAGE="[Auto-Sync] Atualização das configurações em $(hostname -f) - $(date +'%Y-%m-%d %H:%M:%S')"
echo "[INFO] A fazer o commit com a mensagem: $COMMIT_MESSAGE" log_info "A fazer o commit com a mensagem: $COMMIT_MESSAGE"
git commit -m "$COMMIT_MESSAGE" git commit -m "$COMMIT_MESSAGE"
echo "[INFO] A enviar as alterações para o Gitea (git push)..." log_info "A enviar as alterações para o Gitea (git push)..."
git push origin main git push origin main
echo "[SUCESSO] As alterações foram enviadas para o repositório remoto!" echo "[SUCESSO] As alterações foram enviadas para o repositório remoto!"
else else
echo "[INFO] Nenhuma alteração de configuração detetada. O repositório está atualizado." log_info "Nenhuma alteração de configuração detetada. O repositório está atualizado."
fi fi
echo "--- Verificação de sincronização concluída com sucesso [$(date)] ---" log_info "--- Verificação de sincronização concluída [$(date)] ---"
exit 0 exit 0
EOF EOF
# ... (o resto do script que gera proxy-sinc.service, proxy-sinc.timer e proxy-sinc.8 continua aqui, exatamente como antes) ... # Gera o script de atualização
cat > ./proxy-sinc.service << 'EOF' cat > "$SCRIPT_INSTALL_DIR/proxy-sinc-update" << EOF
#!/bin/bash
set -e
echo "A procurar por atualizações para o serviço Proxy-Sinc..."
UPDATE_SCRIPT_URL="https://git.itguys.com.br/joao.goncalves/NgixProxy_Pathfinder/raw/branch/main/setup.sh"
TEMP_SCRIPT="/tmp/setup_latest.sh"
echo "A baixar a versão mais recente do instalador de: \$UPDATE_SCRIPT_URL"
if curl -k -L "\$UPDATE_SCRIPT_URL" -o "\$TEMP_SCRIPT"; then
chmod +x "\$TEMP_SCRIPT"
echo "Instalador baixado com sucesso. A executar a atualização..."
sudo "\$TEMP_SCRIPT"
rm "\$TEMP_SCRIPT"
echo "Atualização concluída!"
else
echo "ERRO: Falha ao baixar o script de atualização." >&2
exit 1
fi
exit 0
EOF
# Gera os ficheiros de serviço do systemd
cat > "$SYSTEMD_DIR/proxy-sinc.service" << 'EOF'
[Unit] [Unit]
Description=Serviço de Sincronização de Configurações do Nginx para o Git Description=Serviço de Sincronização de Configurações do Nginx para o Git
After=network.target After=network.target
@ -144,7 +217,8 @@ After=network.target
Type=oneshot Type=oneshot
ExecStart=/usr/local/sbin/commit_configs.sh ExecStart=/usr/local/sbin/commit_configs.sh
EOF EOF
cat > ./proxy-sinc.timer << 'EOF'
cat > "$SYSTEMD_DIR/proxy-sinc.timer" << 'EOF'
[Unit] [Unit]
Description=Executa o serviço de sincronização de configurações a cada minuto Description=Executa o serviço de sincronização de configurações a cada minuto
[Timer] [Timer]
@ -154,61 +228,69 @@ Unit=proxy-sinc.service
[Install] [Install]
WantedBy=timers.target WantedBy=timers.target
EOF EOF
cat > ./proxy-sinc.8 << 'EOF'
# Gera a nova man page
cat > "/tmp/proxy-sinc.8" << 'EOF'
.TH PROXY-SINC 8 "Setembro 2025" "iT Guys - Equipa de Infraestrutura" "Ferramentas de Sistema" .TH PROXY-SINC 8 "Setembro 2025" "iT Guys - Equipa de Infraestrutura" "Ferramentas de Sistema"
.SH NAME .SH NAME
proxy-sinc \- Serviço de versionamento automático de configurações de servidor proxy-sinc \- Serviço de versionamento automático de configurações de servidor
.SH SYNOPSIS .SH SYNOPSIS
Este serviço é gerido pelo systemd e não se destina a ser executado manualmente. .B systemctl status proxy-sinc.timer
.br .br
Para verificar o status: \fBsystemctl status proxy-sinc.timer\fR .B journalctl -u proxy-sinc.service
.br .br
Para ver os logs: \fBjournalctl -u proxy-sinc.service\fR .B proxy-sinc-update
.br
.B man proxy-sinc
.SH DESCRIPTION .SH DESCRIPTION
.B proxy-sinc .B proxy-sinc
é um serviço de sistema que automatiza o controlo de versões de ficheiros de configuração críticos. A cada minuto, ele executa um script que sincroniza os diretórios de configuração do Nginx e do Fail2ban para um repositório Git local. Se forem detetadas alterações, ele cria um commit com um timestamp e envia as alterações para um repositório Git remoto (Gitea). é um serviço de sistema que automatiza o controlo de versões de ficheiros de configuração críticos. A cada minuto, ele executa um script que sincroniza os ficheiros e diretórios definidos em \fI/etc/proxy-sinc/paths.conf\fR para um repositório Git. Se forem detetadas alterações, ele cria um commit e envia as alterações para um repositório Git remoto (Gitea).
.PP .PP
A autenticação com o Gitea é feita através de um Token de Acesso, e a identidade do committer é definida automaticamente com o hostname do servidor. A verificação de certificados SSL pode ser desativada durante a instalação para uso com servidores Gitea internos. Esta abordagem garante um histórico completo de todas as alterações, facilita a recuperação de desastres e serve como um backup centralizado.
.SH CONFIGURAÇÃO .SH CONFIGURAÇÃO
Os ficheiros principais deste serviço estão localizados nos seguintes caminhos: A gestão dos ficheiros e diretórios a serem sincronizados é feita através do ficheiro de texto:
.TP
\fB/etc/proxy-sinc/paths.conf\fR
Este ficheiro contém a lista de caminhos absolutos a serem versionados. Adicione um caminho por linha. Linhas vazias ou que começam com '#' são ignoradas. O script irá sincronizar cada caminho para um subdiretório com o mesmo nome dentro do repositório Git.
.SH ATUALIZAÇÃO
Para atualizar o serviço e os seus scripts para a versão mais recente, execute o seguinte comando como root:
.sp
\fBproxy-sinc-update\fR
.sp
Este comando irá baixar e executar a versão mais recente do script de instalação a partir do repositório Git oficial, atualizando todos os componentes necessários.
.SH FICHEIROS
.TP .TP
\fB/usr/local/sbin/commit_configs.sh\fR \fB/usr/local/sbin/commit_configs.sh\fR
O script principal que executa a lógica de sincronização e commit. O script principal que executa a lógica de sincronização e commit.
.TP .TP
\fB/usr/local/sbin/proxy-sinc-update\fR
O script que gere a auto-atualização do serviço.
.TP
\fB/etc/systemd/system/proxy-sinc.service\fR \fB/etc/systemd/system/proxy-sinc.service\fR
O ficheiro de unidade do systemd que define como executar o script. O ficheiro de unidade do systemd que define como executar o script.
.TP .TP
\fB/etc/systemd/system/proxy-sinc.timer\fR \fB/etc/systemd/system/proxy-sinc.timer\fR
O ficheiro de timer do systemd que define a frequência de execução (a cada minuto). O ficheiro de timer do systemd que define a frequência de execução.
.TP .TP
\fB/opt/config_repo\fR \fB/opt/config_repo\fR
O diretório local onde o repositório Git é clonado e as configurações são preparadas antes do commit. O diretório local onde o repositório Git é clonado.
.SH LOGGING
Toda a saída do script (tanto a standard como a de erro) é automaticamente capturada pelo \fBjournald(1)\fR. Para ver os logs em tempo real, use:
.sp
\fIjournalctl -u proxy-sinc.service -f\fR
.SH SEGURANÇA
O script usa \fBrsync(1)\fR para copiar as configurações para uma área de "staging" antes do commit. Isto é uma prática de segurança deliberada para evitar os perigos de usar um diretório de configuração do sistema (ex: /etc/nginx) diretamente como um repositório Git. Um comando \fBgit checkout\fR acidental poderia alterar a configuração em produção instantaneamente, causando paragens de serviço.
.SH SEE ALSO .SH SEE ALSO
.BR git (1), .BR git (1),
.BR rsync (1), .BR rsync (1),
.BR systemd.service (5), .BR systemd.service (5),
.BR systemd.timer (5), .BR systemd.timer (5)
.BR crontab (5)
EOF EOF
# --- 7. Mover ficheiros para os locais corretos e instalar ---
# --- Mover ficheiros para os locais corretos e instalar ---
mv ./commit_configs.sh "$SCRIPT_INSTALL_DIR/"
chmod +x "$SCRIPT_INSTALL_DIR/commit_configs.sh" chmod +x "$SCRIPT_INSTALL_DIR/commit_configs.sh"
mv ./proxy-sinc.service "$SYSTEMD_DIR/" chmod +x "$SCRIPT_INSTALL_DIR/proxy-sinc-update"
mv ./proxy-sinc.timer "$SYSTEMD_DIR/" # (os ficheiros de serviço já foram criados no sítio certo)
mkdir -p "$MAN_DIR" mkdir -p "$MAN_DIR"
mv ./proxy-sinc.8 "$MAN_DIR/" mv "/tmp/proxy-sinc.8" "$MAN_DIR/"
gzip -f "$MAN_DIR/proxy-sinc.8" gzip -f "$MAN_DIR/proxy-sinc.8"
info "Ficheiros instalados com sucesso." info "Ficheiros instalados com sucesso."
# --- Ativar o Serviço --- # --- 8. Ativar o Serviço ---
info "A recarregar o systemd e a ativar o timer..." info "A recarregar o systemd e a ativar o timer..."
systemctl daemon-reload systemctl daemon-reload
systemctl enable --now proxy-sinc.timer systemctl enable --now proxy-sinc.timer
@ -217,7 +299,7 @@ info "Serviço ativado e a correr!"
# --- Conclusão --- # --- Conclusão ---
echo "" echo ""
info "======================================================================" info "======================================================================"
info " Instalação Concluída!" info " Instalação/Atualização Concluída!"
info "======================================================================" info "======================================================================"
info "O serviço 'proxy-sinc' está agora ativo e irá sincronizar as suas" info "O serviço 'proxy-sinc' está agora ativo e irá sincronizar as suas"
info "configurações para o Gitea a cada minuto." info "configurações para o Gitea a cada minuto."
@ -227,5 +309,9 @@ info " Ver o status do timer: systemctl status proxy-sinc.timer"
info " Ver os logs da última execução: systemctl status proxy-sinc.service" info " Ver os logs da última execução: systemctl status proxy-sinc.service"
info " Ver o histórico de logs: journalctl -u proxy-sinc.service" info " Ver o histórico de logs: journalctl -u proxy-sinc.service"
info " Ler o manual de ajuda: man proxy-sinc" info " Ler o manual de ajuda: man proxy-sinc"
info " Para atualizar o serviço no futuro: proxy-sinc-update"
info ""
info "Para adicionar novos ficheiros/pastas à sincronização, edite:"
info " /etc/proxy-sinc/paths.conf"
info "" info ""