Refactoring & consistency changes
Make all scripts executable Disable debug mode by default Use eager tasks by default Fix typo in settings Refactoring
This commit is contained in:
parent
6fa67f0531
commit
5d26ab292b
@ -93,11 +93,8 @@ Shynet is pretty simple, but there are a few key terms you need to know in order
|
||||
|
||||
## Installation
|
||||
|
||||
If you use docker-compose, you can use the docker-compose.yml file to set up shynet and launch it by doing docker-compose up.
|
||||
Note that the application will generate a password for you on initial run, which will be output to standard docker logs.
|
||||
Also note that this compose file assumes you use a reverse-proxy in front of it, whether Traefik v2, Nginx-Proxy, or a solution on your host.
|
||||
|
||||
You can find further installation instructions in the [Getting Started Guide](GUIDE.md#installation).
|
||||
You can find installation instructions in the [Getting Started Guide](GUIDE.md#installation). Out of the box, we support deploying via a simple
|
||||
Docker container, docker-compose, or Kubernetes (see [kubernetes](/kubernetes)).
|
||||
|
||||
## FAQ
|
||||
|
||||
|
59
TEMPLATE.env
Normal file
59
TEMPLATE.env
Normal file
@ -0,0 +1,59 @@
|
||||
# This file shows all of the environment variables you can
|
||||
# set to configure Shynet, as well as information about their
|
||||
# effects. Make a copy of this file to configure your deployment.
|
||||
|
||||
|
||||
# Whether to perform checks and setup at startup. For most setups,
|
||||
# the recommended value is True.
|
||||
PERFORM_CHECKS_AND_SETUP=True
|
||||
|
||||
|
||||
# Database settings (PostgreSQL)
|
||||
DB_NAME=shynet_db
|
||||
DB_USER=shynet_db_user
|
||||
DB_PASSWORD=shynet_db_user_password
|
||||
DB_HOST=db
|
||||
DB_PORT=5432
|
||||
|
||||
# Email settings (optional)
|
||||
EMAIL_HOST_USER=example
|
||||
EMAIL_HOST_PASSWORD=example_password
|
||||
EMAIL_HOST=smtp.example.com
|
||||
SERVER_EMAIL=<Shynet> noreply@shynet.example.com
|
||||
|
||||
# General Django settings
|
||||
DJANGO_SECRET_KEY=random_string
|
||||
|
||||
# For better security, set this to your deployment's domain. Comma separated.
|
||||
ALLOWED_HOSTS=*
|
||||
|
||||
# Set to True (capitalized) if you want people to be able to sign up for your Shynet instance (not recommended)
|
||||
SIGNUPS_ENABLED=False
|
||||
|
||||
# The timezone of the admin panel. Affects how dates are displayed.
|
||||
TIME_ZONE=America/New_York
|
||||
|
||||
# Set to "False" if you will not be serving content over HTTPS
|
||||
SCRIPT_USE_HTTPS=True
|
||||
|
||||
# How frequently should the monitoring script "phone home" (in ms)?
|
||||
SCRIPT_HEARTBEAT_FREQUENCY=5000
|
||||
|
||||
# Should only superusers (admins) be able to create services? This is helpful
|
||||
# when you'd like to invite others to your Shynet instance but don't want
|
||||
# them to be able to create services of their own.
|
||||
ONLY_SUPERUSERS_CREATE=True
|
||||
|
||||
# If PERFORM_CHECKS_AND_SETUP is True, the following values will be set on
|
||||
# first run. After they are set once, they won't have any effect.
|
||||
# (Changing these values WILL NOT affect your Shynet instance.)
|
||||
#
|
||||
# Your admin user's email. A temporary password will be printed
|
||||
# to the console on first run.
|
||||
SHYNET_ADMIN_EMAIL=you@example.com
|
||||
|
||||
# The domain on which you'll be hosting Shynet.
|
||||
SHYNET_HOST=shynet.example.com
|
||||
|
||||
# What you'd like to call your Shynet instance.
|
||||
SHYNET_WHITELABEL=My Shynet Instance
|
@ -5,44 +5,12 @@ services:
|
||||
restart: unless-stopped
|
||||
expose:
|
||||
- 8080
|
||||
env_file:
|
||||
# Create a file called '.env' if it doesn't already exist.
|
||||
# You can use `TEMPLATE.env` as a guide.
|
||||
- .env
|
||||
environment:
|
||||
# Database Settings
|
||||
- DB_NAME=shynet_DBname
|
||||
- DB_USER=shynet_User
|
||||
- DB_PASSWORD=shynet_RandomPassword
|
||||
# Database connection, relies on DB service
|
||||
- DB_HOST=db
|
||||
- DB_PORT=5432
|
||||
# General Django settings
|
||||
- DJANGO_SECRET_KEY=shynet_OtherRandomPassword
|
||||
# Don't leak error details to visitors, very important
|
||||
- DEBUG=False
|
||||
# Unless you are using an external Celery task queue, make sure this
|
||||
# is set to True.
|
||||
- CELERY_TASK_ALWAYS_EAGER=True
|
||||
# For better security, set this to your deployment's domain. Comma separated.
|
||||
- ALLOWED_HOSTS=*
|
||||
# Set to True (capitalized) if you want people to be able to sign up for your Shynet instance (not recommended)
|
||||
- SIGNUPS_ENABLED=False
|
||||
# Change as required
|
||||
- TIME_ZONE=America/New_York
|
||||
# Set to "False" if you will not be serving content over HTTPS
|
||||
- SCRIPT_USE_HTTPS=True
|
||||
# Email settings
|
||||
- EMAIL_HOST_USER=youruser@yourhost.example.com
|
||||
- EMAIL_HOST_PASSWORD=youruser_password
|
||||
- EMAIL_HOST=host.email.provider
|
||||
- SERVER_EMAIL=noreply.analytics@shynet.example.com
|
||||
# Redis and queue settings; not necessary for single-instance deployments
|
||||
#- REDIS_CACHE_LOCATION=redis://redis.default.svc.cluster.local/0
|
||||
# If set, make sure CELERY_TASK_ALWAYS_EAGER is False
|
||||
#- CELERY_BROKER_URL=redis://redis.default.svc.cluster.local/1
|
||||
# How frequently should the monitoring script "phone home" (in ms)?
|
||||
- SCRIPT_HEARTBEAT_FREQUENCY=5000
|
||||
# Should only superusers (admins) be able to create services? This is helpful
|
||||
# when you'd like to invite others to your Shynet instance but don't want
|
||||
# them to be able to create services of their own.
|
||||
- ONLY_SUPERUSERS_CREATE=True
|
||||
networks:
|
||||
- internal
|
||||
depends_on:
|
||||
@ -51,9 +19,9 @@ services:
|
||||
image: postgres
|
||||
restart: always
|
||||
environment:
|
||||
- POSTGRES_USER=shynet_User
|
||||
- POSTGRES_PASSWORD=shynet_RandomPassword
|
||||
- POSTGRES_DB=shynet_DBname
|
||||
- "POSTGRES_USER=${DB_USER}"
|
||||
- "POSTGRES_PASSWORD=${DB_PASSWORD}"
|
||||
- "POSTGRES_DB=${DB_NAME}"
|
||||
volumes:
|
||||
- shynet_db:/var/lib/postgresql/data
|
||||
networks:
|
||||
|
@ -14,7 +14,7 @@ from core.models import User
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = "Performs sanity checks on the Shynet setup"
|
||||
help = "Internal command to perform startup sanity checks."
|
||||
|
||||
def check_migrations(self):
|
||||
from django.db.migrations.executor import MigrationExecutor
|
@ -1,44 +1,7 @@
|
||||
#!/bin/bash
|
||||
# Check if Setup is necessary, do setup as needed
|
||||
sanity_results=( $(python manage.py sanity_checks) )
|
||||
if [[ ${sanity_results[0]} == True ]]; then
|
||||
echo "Running Migrations..."
|
||||
{
|
||||
python manage.py migrate && echo "Migrations Done"
|
||||
} || {
|
||||
echo "Failed Migrations, exiting" && exit 1
|
||||
}
|
||||
else
|
||||
echo "Migrations Unecessary, skipping"
|
||||
fi
|
||||
if [[ ${sanity_results[1]} == True ]]; then
|
||||
echo "Running CreateAdmin..."
|
||||
{
|
||||
temppwd=$( python manage.py registeradmin $SHYNET_EMAIL ) && echo "Admin Created, password $temppwd"
|
||||
} || {
|
||||
echo "Failed CreateAdmin, exiting" & exit 1
|
||||
}
|
||||
else
|
||||
echo "CreateAdmin Unecessary, skipping"
|
||||
fi
|
||||
if [[ ${sanity_results[2]} == True ]]; then
|
||||
echo "Setting Hostname..."
|
||||
{
|
||||
python manage.py hostname $SHYNET_HOST && echo "Host Set"
|
||||
} || {
|
||||
echo "Failed setting Hostname, exiting" & exit 1
|
||||
}
|
||||
else
|
||||
echo "Hostname Unecessary, skipping"
|
||||
fi
|
||||
if [[ ${sanity_results[3]} == True ]]; then
|
||||
echo "Setting Hostname..."
|
||||
{
|
||||
python manage.py whitelabel $SHYNET_NAME && echo "WhiteLabel Set"
|
||||
} || {
|
||||
echo "Failed Migrations, exiting" & exit 1
|
||||
}
|
||||
else
|
||||
echo "WhiteLabel Unecessary, skipping"
|
||||
|
||||
if [[ $PERFORM_CHECKS_AND_SETUP == True ]]; then
|
||||
./startup_checks.sh
|
||||
fi
|
||||
|
||||
./webserver.sh
|
||||
|
@ -27,7 +27,7 @@ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
SECRET_KEY = os.getenv("DJANGO_SECRET_KEY", "onlyusethisindev")
|
||||
|
||||
# SECURITY WARNING: don't run with debug turned on in production!
|
||||
DEBUG = os.getenv("DEBUG", "True") == "True"
|
||||
DEBUG = os.getenv("DEBUG", "False") == "True"
|
||||
|
||||
ALLOWED_HOSTS = os.getenv("ALLOWED_HOSTS", "*").split(",")
|
||||
|
||||
@ -214,7 +214,7 @@ SITE_ID = 1
|
||||
|
||||
# Celery
|
||||
|
||||
CELERY_TASK_ALWAYS_EAGER = os.getenv("CELERY_TASK_ALWAYS_EAGER", "False") == "True"
|
||||
CELERY_TASK_ALWAYS_EAGER = os.getenv("CELERY_TASK_ALWAYS_EAGER", "True") == "True"
|
||||
|
||||
CELERY_BROKER_URL = os.getenv("CELERY_BROKER_URL")
|
||||
CELERY_REDIS_SOCKET_TIMEOUT = 15
|
||||
|
0
shynet/ssl.webserver.sh
Normal file → Executable file
0
shynet/ssl.webserver.sh
Normal file → Executable file
45
shynet/startup_checks.sh
Executable file
45
shynet/startup_checks.sh
Executable file
@ -0,0 +1,45 @@
|
||||
#!/bin/bash
|
||||
# Check if setup is necessary, do setup as needed
|
||||
echo "Performing startup checks..."
|
||||
sanity_results=( $(./manage.py startup_checks) )
|
||||
if [[ ${sanity_results[0]} == True ]]; then
|
||||
echo "Running migrations (setting up DB)..."
|
||||
{
|
||||
./manage.py migrate && echo "Migrations complete!"
|
||||
} || {
|
||||
echo "Migrations failed, exiting" && exit 1
|
||||
}
|
||||
else
|
||||
echo "Database is ready to go."
|
||||
fi
|
||||
if [[ -n $SHYNET_ADMIN_EMAIL && ${sanity_results[1]} == True ]]; then
|
||||
echo "Creating an admin user..."
|
||||
{
|
||||
temppwd=$( ./manage.py registeradmin $SHYNET_ADMIN_EMAIL ) && echo "Admin user ($SHYNET_ADMIN_EMAIL) created! Password: $temppwd"
|
||||
} || {
|
||||
echo "Failed to create admin, exiting" & exit 1
|
||||
}
|
||||
else
|
||||
echo "Making no changes to admin user."
|
||||
fi
|
||||
if [[ -n $SHYNET_HOST && ${sanity_results[2]} == True ]]; then
|
||||
echo "Setting hostname..."
|
||||
{
|
||||
./manage.py hostname $SHYNET_HOST && echo "Hostname set to $SHYNET_HOST!"
|
||||
} || {
|
||||
echo "Failed setting hostname, exiting" & exit 1
|
||||
}
|
||||
else
|
||||
echo "Making no changes to hostname."
|
||||
fi
|
||||
if [[ -n $SHYNET_WHITELABEL && ${sanity_results[3]} == True ]]; then
|
||||
echo "Setting whitelabel..."
|
||||
{
|
||||
./manage.py whitelabel $SHYNET_WHITELABEL && echo "Whitelabel set! Whitelabel: $SHYNET_WHITELABEL"
|
||||
} || {
|
||||
echo "Failed to set whitelabel, exiting" & exit 1
|
||||
}
|
||||
else
|
||||
echo "Making no changes to whitelabel."
|
||||
fi
|
||||
echo "Startup checks complete!"
|
Loading…
Reference in New Issue
Block a user