mirror of
https://github.com/guezoloic/serverconfig.git
synced 2026-03-31 11:11:35 +00:00
Compare commits
5 Commits
f40eeff6be
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
91f403b696 | ||
| feb074b9e8 | |||
| ff99ffc8f7 | |||
| 0cb703e02d | |||
| cc9d388c0a |
16
README.md
16
README.md
@@ -1,4 +1,4 @@
|
||||
<h1 align=center> ServerConfig </h1>
|
||||
<h1 align=center> server-config </h1>
|
||||
my own configuration management tool designed to quickly setup a server. It provides a simple way to deploy all my configuration needs.
|
||||
|
||||
## Table of Content
|
||||
@@ -19,19 +19,13 @@ Ensure you have the following **programs** installed:
|
||||
- **aws**
|
||||
- **docker**
|
||||
|
||||
## Paths
|
||||
|
||||
- /usr/local/bin/scripts
|
||||
- /usr/local/bin/libs
|
||||
- /var/log/serverconfig.log
|
||||
- /etc/serverconfig
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
git clone https://github.com/guezoloic/serverconfig.git
|
||||
cd serverconfig && \
|
||||
chmod +x ./install.sh && ./install.sh
|
||||
git clone https://github.com/guezoloic/server-config.git
|
||||
cd serverconfig
|
||||
chmod +x ./install.sh
|
||||
./install.sh
|
||||
```
|
||||
|
||||
## Contributing
|
||||
|
||||
@@ -5,17 +5,29 @@ readonly PROJECT_DIR 2>/dev/null
|
||||
|
||||
source $PROJECT_DIR/utils.sh
|
||||
|
||||
ENV_LIST_PS=(
|
||||
"MIRROR_AUTH_SECRET"
|
||||
"SYNAPSE_PASSWORD"
|
||||
)
|
||||
|
||||
if [[ "--install" == $1 ]]; then
|
||||
|
||||
log_info "docker-compose Installation"
|
||||
COMPOSE_FILE="$(realpath "$PROJECT_DIR/docker-compose.yml")"
|
||||
|
||||
if [[ -f "$COMPOSE_FILE" ]]; then
|
||||
docker compose -f "$COMPOSE_FILE" up -d --force-recreate --remove-orphans && \
|
||||
log_success "$COMPOSE_FILE is running.";
|
||||
CMD="0 0 * * * PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin /usr/bin/docker compose --env-file $ENV_FILE -f $PROJECT_DIR/docker-compose.yml pull -q && /usr/bin/docker compose --env-file $ENV_FILE -f $PROJECT_DIR/docker-compose.yml up -d --remove-orphans"
|
||||
log_info "set docker password..."
|
||||
|
||||
for env in "${ENV_LIST_PS[@]}"; do
|
||||
env_variable "$env" "$(openssl rand -base64 32)"
|
||||
done
|
||||
|
||||
docker compose -f "$COMPOSE_FILE" up -d --force-recreate --remove-orphans &&
|
||||
log_success "$COMPOSE_FILE is running."
|
||||
CMD="0 0 * * * PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin /usr/bin/docker compose --env-file $ENV_FILE -f $PROJECT_DIR/docker-compose.yml pull -q && /usr/bin/docker compose --env-file $ENV_FILE -f $PROJECT_DIR/docker-compose.yml up -d --remove-orphans && /usr/bin/docker image prune -f"
|
||||
add_crontab "$CMD"
|
||||
else
|
||||
log_error "no docker-compose.yml found at $PROJECT_DIR";
|
||||
log_error "no docker-compose.yml found at $PROJECT_DIR"
|
||||
fi
|
||||
exit
|
||||
fi
|
||||
|
||||
@@ -64,8 +64,8 @@ services:
|
||||
image: offen/docker-volume-backup
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
AWS_S3_BUCKET_NAME: ${AWS}
|
||||
AWS_ENDPOINT: ${ENDPOINT}
|
||||
AWS_S3_BUCKET_NAME: ${AWS_NAME}
|
||||
AWS_ENDPOINT: ${ENDPOINT_NAME}
|
||||
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
|
||||
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
|
||||
BACKUP_CRON_EXPRESSION: "0 0 * * *"
|
||||
@@ -189,7 +189,7 @@ services:
|
||||
environment:
|
||||
- POSTGRES_DB=synapse
|
||||
- POSTGRES_USER=synapse
|
||||
- POSTGRES_PASSWORD=${DB_PASSWORD}
|
||||
- POSTGRES_PASSWORD=${SYNAPSE_PASSWORD}
|
||||
volumes:
|
||||
- ./data/matrix/postgres:/var/lib/postgresql/data
|
||||
deploy:
|
||||
@@ -220,7 +220,7 @@ services:
|
||||
- VIRTUAL_PORT=8008
|
||||
- SYNAPSE_POSTGRES_HOST=db-matrix
|
||||
- SYNAPSE_POSTGRES_USER=synapse
|
||||
- SYNAPSE_POSTGRES_PASSWORD=${DB_PASSWORD}
|
||||
- SYNAPSE_POSTGRES_PASSWORD=${SYNAPSE_PASSWORD}
|
||||
- SYNAPSE_POSTGRES_DB=synapse
|
||||
networks:
|
||||
- web-network
|
||||
@@ -244,7 +244,7 @@ services:
|
||||
- VIRTUAL_PORT=3000
|
||||
- GITEA__server__DOMAIN=git.${HOSTNAME}
|
||||
- GITEA__server__ROOT_URL=https://git.${HOSTNAME}/
|
||||
# - DISABLE_REGISTRATION=true # Private instance security
|
||||
- GITEA__service__DISABLE_REGISTRATION=true
|
||||
volumes:
|
||||
- ./data/gitea:/data
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
@@ -263,7 +263,7 @@ services:
|
||||
- LETSENCRYPT_HOST=mirror.${HOSTNAME}
|
||||
- LETSENCRYPT_EMAIL=${EMAIL}
|
||||
- VIRTUAL_PORT=4321
|
||||
- BETTER_AUTH_SECRET=${GITHUB_AUTH_SECRET}
|
||||
- BETTER_AUTH_SECRET=${MIRROR_AUTH_SECRET}
|
||||
- BETTER_AUTH_TRUSTED_ORIGINS=https://mirror.${HOSTNAME}
|
||||
volumes:
|
||||
- gitea-mirror-data:/app/data
|
||||
|
||||
@@ -9,9 +9,7 @@ set -euo pipefail
|
||||
ENV_LIST=(
|
||||
"EMAIL" "HOSTNAME"
|
||||
"TELEGRAM_TOKEN" "TELEGRAM_CHAT_ID"
|
||||
"AWS" "ENDPOINT" "AWS_ACCESS_KEY_ID" "AWS_SECRET_ACCESS_KEY"
|
||||
"GITHUB_AUTH_SECRET"
|
||||
"DB_PASSWORD"
|
||||
"AWS_NAME" "ENDPOINT_NAME" "AWS_ACCESS_KEY_ID" "AWS_SECRET_ACCESS_KEY"
|
||||
)
|
||||
|
||||
readonly REQ=(
|
||||
@@ -24,6 +22,7 @@ readonly REQ=(
|
||||
"pgrep"
|
||||
"pkill"
|
||||
"uptime"
|
||||
"openssl"
|
||||
)
|
||||
|
||||
function check_root() {
|
||||
@@ -72,9 +71,9 @@ function main() {
|
||||
touch "$ENV_FILE"
|
||||
|
||||
for env in "${ENV_LIST[@]}"; do
|
||||
read -sp "Enter value for $env: " value
|
||||
read -p "Enter value for $env: " value
|
||||
echo
|
||||
env_variable "$env" "$value"
|
||||
env_variable_interaction "$env" "$value"
|
||||
done
|
||||
|
||||
install_scripts
|
||||
|
||||
27
utils.sh
27
utils.sh
@@ -43,9 +43,7 @@ function send_notification() {
|
||||
-d "parse_mode=HTML"
|
||||
}
|
||||
|
||||
function env_variable() {
|
||||
source $ENV_FILE
|
||||
|
||||
function env_variable_interaction() {
|
||||
local key="$1"
|
||||
local value="$2"
|
||||
|
||||
@@ -65,7 +63,21 @@ function env_variable() {
|
||||
;;
|
||||
esac
|
||||
else
|
||||
echo "$key=$value" >> "$ENV_FILE"
|
||||
|
||||
echo "$key=$value" >>"$ENV_FILE"
|
||||
log_success "$key created."
|
||||
fi
|
||||
}
|
||||
|
||||
function env_variable() {
|
||||
local key="$1"
|
||||
local value="$2"
|
||||
|
||||
if grep -Eq "^${key}=" "$ENV_FILE" 2>/dev/null; then
|
||||
sed -i "s/^$key=.*/$key=$value/" "$ENV_FILE"
|
||||
log_success "$key updated."
|
||||
else
|
||||
echo "$key=$value" >>"$ENV_FILE"
|
||||
log_success "$key created."
|
||||
fi
|
||||
}
|
||||
@@ -76,10 +88,13 @@ function add_crontab() {
|
||||
fi
|
||||
|
||||
CRON_JOB=$1
|
||||
crontab -l 2>/dev/null | grep -F "$CRON_JOB" > /dev/null 2>&1
|
||||
crontab -l 2>/dev/null | grep -F "$CRON_JOB" >/dev/null 2>&1
|
||||
|
||||
if ! crontab -l 2>/dev/null | grep -Fq "$CRON_JOB"; then
|
||||
(crontab -l 2>/dev/null; echo "$CRON_JOB") | crontab -
|
||||
(
|
||||
crontab -l 2>/dev/null
|
||||
echo "$CRON_JOB"
|
||||
) | crontab -
|
||||
log_success "Cron job added."
|
||||
fi
|
||||
}
|
||||
Reference in New Issue
Block a user