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
 | 
					## 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.
 | 
					You can find installation instructions in the [Getting Started Guide](GUIDE.md#installation). Out of the box, we support deploying via a simple
 | 
				
			||||||
Note that the application will generate a password for you on initial run, which will be output to standard docker logs.
 | 
					Docker container, docker-compose, or Kubernetes (see [kubernetes](/kubernetes)).
 | 
				
			||||||
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).
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
## FAQ
 | 
					## 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
 | 
					    restart: unless-stopped
 | 
				
			||||||
    expose:
 | 
					    expose:
 | 
				
			||||||
      - 8080
 | 
					      - 8080
 | 
				
			||||||
 | 
					    env_file:
 | 
				
			||||||
 | 
					      # Create a file called '.env' if it doesn't already exist.
 | 
				
			||||||
 | 
					      # You can use `TEMPLATE.env` as a guide.
 | 
				
			||||||
 | 
					      - .env
 | 
				
			||||||
    environment:
 | 
					    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_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:
 | 
					    networks:
 | 
				
			||||||
      - internal
 | 
					      - internal
 | 
				
			||||||
    depends_on:
 | 
					    depends_on:
 | 
				
			||||||
@ -51,9 +19,9 @@ services:
 | 
				
			|||||||
    image: postgres
 | 
					    image: postgres
 | 
				
			||||||
    restart: always
 | 
					    restart: always
 | 
				
			||||||
    environment:
 | 
					    environment:
 | 
				
			||||||
      - POSTGRES_USER=shynet_User
 | 
					      - "POSTGRES_USER=${DB_USER}"
 | 
				
			||||||
      - POSTGRES_PASSWORD=shynet_RandomPassword
 | 
					      - "POSTGRES_PASSWORD=${DB_PASSWORD}"
 | 
				
			||||||
      - POSTGRES_DB=shynet_DBname
 | 
					      - "POSTGRES_DB=${DB_NAME}"
 | 
				
			||||||
    volumes:
 | 
					    volumes:
 | 
				
			||||||
      - shynet_db:/var/lib/postgresql/data
 | 
					      - shynet_db:/var/lib/postgresql/data
 | 
				
			||||||
    networks:
 | 
					    networks:
 | 
				
			||||||
 | 
				
			|||||||
@ -14,7 +14,7 @@ from core.models import User
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Command(BaseCommand):
 | 
					class Command(BaseCommand):
 | 
				
			||||||
    help = "Performs sanity checks on the Shynet setup"
 | 
					    help = "Internal command to perform startup sanity checks."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def check_migrations(self):
 | 
					    def check_migrations(self):
 | 
				
			||||||
        from django.db.migrations.executor import MigrationExecutor
 | 
					        from django.db.migrations.executor import MigrationExecutor
 | 
				
			||||||
@ -1,44 +1,7 @@
 | 
				
			|||||||
#!/bin/bash
 | 
					#!/bin/bash
 | 
				
			||||||
# Check if Setup is necessary, do setup as needed
 | 
					
 | 
				
			||||||
sanity_results=( $(python manage.py sanity_checks) )
 | 
					if [[ $PERFORM_CHECKS_AND_SETUP == True ]]; then
 | 
				
			||||||
if [[ ${sanity_results[0]} == True ]]; then
 | 
					  ./startup_checks.sh
 | 
				
			||||||
  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"
 | 
					 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
./webserver.sh
 | 
					./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")
 | 
					SECRET_KEY = os.getenv("DJANGO_SECRET_KEY", "onlyusethisindev")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# SECURITY WARNING: don't run with debug turned on in production!
 | 
					# 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(",")
 | 
					ALLOWED_HOSTS = os.getenv("ALLOWED_HOSTS", "*").split(",")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -214,7 +214,7 @@ SITE_ID = 1
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# Celery
 | 
					# 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_BROKER_URL = os.getenv("CELERY_BROKER_URL")
 | 
				
			||||||
CELERY_REDIS_SOCKET_TIMEOUT = 15
 | 
					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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user