archive
This commit is contained in:
5
2try
Executable file
5
2try
Executable file
@@ -0,0 +1,5 @@
|
||||
https://firefly-iii.readthedocs.io/en/latest/installation/docker.html
|
||||
https://github.com/gugoan/economizzer#live-demo
|
||||
http://www.economizzer.org
|
||||
https://github.com/beancount/fava
|
||||
|
||||
10
fava/fava.sh
Executable file
10
fava/fava.sh
Executable file
@@ -0,0 +1,10 @@
|
||||
#! /bin/bash
|
||||
|
||||
function clean() {
|
||||
docker rm -f $(docker ps -a | grep fava | awk '{print $NF}')
|
||||
}
|
||||
trap clean EXIT
|
||||
|
||||
echo 'touch /any.bean && fava -d --host 0.0.0.0 /any.bean' | docker run --rm -i -p 5000:5000 yegle/fava sh > /dev/null 2>&1 &
|
||||
sleep 5
|
||||
docker logs --follow $(docker ps -a | grep fava | awk '{print $NF}')
|
||||
BIN
ff3-to-ledger/ff3.csv.tar
Normal file
BIN
ff3-to-ledger/ff3.csv.tar
Normal file
Binary file not shown.
111
ff3-to-ledger/to_ledger.py
Executable file
111
ff3-to-ledger/to_ledger.py
Executable file
@@ -0,0 +1,111 @@
|
||||
#! /bin/python3
|
||||
|
||||
class FireflyIIITransaction(dict) :
|
||||
def __init__(self, keys, line) :
|
||||
for k, v in { keys[i]:line[i] for i in range(len(keys)) }.items() :
|
||||
if not k in dir(self) :
|
||||
setattr(self, k, v)
|
||||
self.keys = keys[:]
|
||||
dict.__init__(self, self.__dict__())
|
||||
|
||||
def __dict__(self) :
|
||||
keys = [
|
||||
"user_id",
|
||||
"group_id",
|
||||
"journal_id",
|
||||
"created_at",
|
||||
"updated_at",
|
||||
"group_title",
|
||||
"type",
|
||||
"amount",
|
||||
"foreign_amount",
|
||||
"currency_code",
|
||||
"foreign_currency_code",
|
||||
"description",
|
||||
"date",
|
||||
"source_name",
|
||||
"source_iban",
|
||||
"source_type",
|
||||
"destination_name",
|
||||
"destination_iban",
|
||||
"destination_type",
|
||||
"reconciled",
|
||||
"category",
|
||||
"budget",
|
||||
"bill",
|
||||
"tags",
|
||||
]
|
||||
keys = [
|
||||
"type",
|
||||
"amount",
|
||||
"date",
|
||||
"source_name",
|
||||
"source_type",
|
||||
"destination_name",
|
||||
"destination_type",
|
||||
"category",
|
||||
"description",
|
||||
]
|
||||
return { k:getattr(self, k) for k in keys if k in self.keys }
|
||||
|
||||
def __str__(self) :
|
||||
return self.ledger()
|
||||
|
||||
def ledger(self) :
|
||||
date = self.date.split("T")[0]
|
||||
description = getattr(self, "description" if self.description and self.description != "(null)" else "source_name" if self.type in ["Withdrawl", "Transfer"] else "destination_name")
|
||||
amount = float("{:0.2f}".format(float(self.amount)).strip("-"))
|
||||
local = ""
|
||||
remote = ""
|
||||
if self.type.startswith("Withdraw") :
|
||||
amount = -1.0 * amount
|
||||
local = ":".join([self.source_type, self.source_name]).title().replace(" ", "")
|
||||
remote = ":".join([self.type, self.category, self.destination_name]).title().replace(" ", "")
|
||||
elif self.type == "Transfer" :
|
||||
local = ":".join([self.destination_type, self.destination_name]).title().replace(" ", "")
|
||||
remote = ":".join([self.source_type, self.source_name]).title().replace(" ", "")
|
||||
elif self.type == "Deposit" :
|
||||
local = ":".join([self.destination_type, self.destination_name]).title().replace(" ", "")
|
||||
remote = ":".join([self.type, self.category, self.source_name]).title().replace(" ", "")
|
||||
else :
|
||||
raise Exception("unknown type: "+self.type)
|
||||
return "\n".join([i for i in [ j for j in f'''{date} {description}
|
||||
{"{:100s}".format(remote)} ${"{:0.2f}".format(-1.0 * amount)}
|
||||
{"{:100s}".format(local)} ${"{:0.2f}".format(amount)}
|
||||
'''.split("\n") if j.strip() ]])
|
||||
|
||||
|
||||
class FireflyIII() :
|
||||
def __init__(self, path) :
|
||||
import csv
|
||||
lines = [ i for i in csv.reader(open(path)) ]
|
||||
keys = lines[0]
|
||||
lines = lines[1:]
|
||||
self.transactions = [ FireflyIIITransaction(keys, i) for i in lines ]
|
||||
|
||||
def __str__(self) :
|
||||
import json
|
||||
return json.dumps(self.transactions, indent=" ")
|
||||
|
||||
def __getitem__(self, k) :
|
||||
return self.transactions[k]
|
||||
|
||||
def ledger(self) :
|
||||
return sorted([i.ledger() for i in self.transactions])
|
||||
|
||||
def main(args) :
|
||||
if not args :
|
||||
args.append("./ff3.csv")
|
||||
ff3 = FireflyIII(args[0])
|
||||
print(ff3)
|
||||
print(ff3[0])
|
||||
print("\n".join(ff3.ledger()))
|
||||
f = open("./ledger.dat", "w")
|
||||
for ledger in ff3.ledger() :
|
||||
f.write(ledger)
|
||||
f.write("\n")
|
||||
f.close()
|
||||
|
||||
if __name__ == "__main__" :
|
||||
from sys import argv
|
||||
main(argv[1:])
|
||||
46
firefly/compose-old/firefly-compose.yml
Executable file
46
firefly/compose-old/firefly-compose.yml
Executable file
@@ -0,0 +1,46 @@
|
||||
---
|
||||
networks:
|
||||
firefly_iii_net:
|
||||
driver: bridge
|
||||
services:
|
||||
firefly_iii_app:
|
||||
environment:
|
||||
- FF_DB_HOST=firefly_iii_db
|
||||
- FF_DB_NAME=firefly
|
||||
- FF_DB_USER=firefly
|
||||
- FF_DB_PASSWORD=firefly
|
||||
- FF_APP_KEY=S0m3R@nd0mStr1ngOf32Ch@rsEx@ctly
|
||||
- FF_APP_ENV=local
|
||||
- FF_DB_CONNECTION=pgsql
|
||||
- TZ=Europe/Amsterdam
|
||||
- APP_LOG_LEVEL=debug
|
||||
image: jc5x/firefly-iii
|
||||
links:
|
||||
- firefly_iii_db
|
||||
networks:
|
||||
- firefly_iii_net
|
||||
ports:
|
||||
- "80:80"
|
||||
#volumes:
|
||||
# -
|
||||
# source: firefly_iii_export
|
||||
# target: /var/www/firefly-iii/storage/export
|
||||
# type: volume
|
||||
# -
|
||||
# source: firefly_iii_upload
|
||||
# target: /var/www/firefly-iii/storage/upload
|
||||
# type: volume
|
||||
firefly_iii_db:
|
||||
environment:
|
||||
- POSTGRES_PASSWORD=firefly
|
||||
- POSTGRES_USER=firefly
|
||||
image: "postgres:10"
|
||||
networks:
|
||||
- firefly_iii_net
|
||||
#volumes:
|
||||
# - "firefly_iii_db:/var/lib/postgresql/data"
|
||||
version: "3.2"
|
||||
#volumes:
|
||||
# firefly_iii_db: ~
|
||||
# firefly_iii_export: ~
|
||||
# firefly_iii_upload: ~
|
||||
25
firefly/compose-old/firefly.sh
Executable file
25
firefly/compose-old/firefly.sh
Executable file
@@ -0,0 +1,25 @@
|
||||
#! /bin/bash
|
||||
|
||||
cd "$(dirname "${BASH_SOURCE[0]}")"
|
||||
|
||||
function clean() {
|
||||
docker-compose -f firefly-compose.yml rm
|
||||
docker rm -f $(docker ps -a | grep firefly | awk '{print $NF}') 2> /dev/null
|
||||
}
|
||||
trap clean EXIT
|
||||
|
||||
docker-compose -f firefly-compose.yml up -d
|
||||
sleep 20
|
||||
docker-compose -f firefly-compose.yml exec firefly_iii_app php artisan migrate --seed
|
||||
sleep 5
|
||||
docker-compose -f firefly-compose.yml exec firefly_iii_app php artisan firefly:upgrade-database
|
||||
sleep 5
|
||||
docker-compose -f firefly-compose.yml exec firefly_iii_app php artisan firefly:verify
|
||||
sleep 5
|
||||
docker-compose -f firefly-compose.yml exec firefly_iii_app php artisan passport:install
|
||||
sleep 5
|
||||
docker-compose -f firefly-compose.yml exec firefly_iii_app php artisan cache:clear
|
||||
sleep 5
|
||||
|
||||
docker logs --follow $(docker ps -a | grep firefly | head -n 1 | awk '{print $NF}')
|
||||
|
||||
1
firefly/postgres/.dockerignore
Executable file
1
firefly/postgres/.dockerignore
Executable file
@@ -0,0 +1 @@
|
||||
tmp
|
||||
75
firefly/postgres/Dockerfile
Executable file
75
firefly/postgres/Dockerfile
Executable file
@@ -0,0 +1,75 @@
|
||||
FROM ubuntu:18.04
|
||||
|
||||
### APT
|
||||
RUN apt -y update \
|
||||
&& DEBIAN_FRONTEND=noninteractive apt -y install tzdata \
|
||||
&& apt -y install locales language-pack-en-base \
|
||||
&& echo '127.0.0.1 firefly-iii-domain.com firefly-iii localhost' >> /etc/hosts \
|
||||
&& apt -y install \
|
||||
postgresql postgresql-contrib \
|
||||
nginx \
|
||||
php-fpm php7.3-pgsql php-curl php-gd php-bcmath php-zip php-intl php-mbstring php-xml php-ldap \
|
||||
curl \
|
||||
gcc \
|
||||
cron \
|
||||
rsync \
|
||||
sudo \
|
||||
&& rm /etc/nginx/sites-enabled/default \
|
||||
&& touch /etc/nginx/sites-available/firefly-iii.conf \
|
||||
&& ln -s /etc/nginx/sites-available/firefly-iii.conf /etc/nginx/sites-enabled/firefly-iii.conf \
|
||||
&& openssl dhparam 2048 > /etc/nginx/dhparam.pem
|
||||
|
||||
USER postgres
|
||||
RUN service postgresql start && sleep 5 \
|
||||
&& psql --command "CREATE DATABASE fireflyiii WITH ENCODING 'UTF8' TEMPLATE='template0';" \
|
||||
&& psql --command "CREATE USER ffly WITH SUPERUSER PASSWORD 'pwd';" \
|
||||
&& psql --command "GRANT ALL PRIVILEGES ON DATABASE fireflyiii TO ffly;" \
|
||||
&& service postgresql stop && sleep 5
|
||||
|
||||
#&& sed 's/^password .*/password = pwd/' /etc/mysql/debian.cnf > /tmp/cnf \
|
||||
#&& mv /tmp/cnf /etc/mysql/debian.cnf \
|
||||
#&& echo 'create database fireflyiii character set utf8 collate utf8_bin; ' \
|
||||
# 'grant all privileges on fireflyiii.* to fireflyiii@localhost identified by '"'"'pwd'"'"'; ' \
|
||||
# | mysql --user=root --password=pwd mysql && echo made fireflyiii
|
||||
USER root
|
||||
|
||||
### PHP
|
||||
RUN service postgresql start && sleep 10 \
|
||||
&& curl -sS https://getcomposer.org/installer \
|
||||
| php -- --install-dir=/usr/local/bin --filename=composer \
|
||||
&& cd /opt \
|
||||
&& composer create-project grumpydictator/firefly-iii --no-dev --prefer-dist firefly-iii 5.0.1
|
||||
COPY ./env /opt/firefly-iii/.env
|
||||
RUN service postgresql start && sleep 10 \
|
||||
&& cd /opt/firefly-iii \
|
||||
&& php artisan migrate:refresh --seed \
|
||||
&& php artisan passport:install \
|
||||
&& chown -R www-data:www-data /opt/firefly-iii \
|
||||
&& mkdir -p /run/php
|
||||
|
||||
### WAIT
|
||||
COPY ./pause /xfer/
|
||||
RUN cd /xfer && gcc main.c -o /xfer/pauser
|
||||
|
||||
### CONFIG
|
||||
COPY ./env /opt/firefly-iii/.env
|
||||
COPY ./firefly-iii.conf /etc/nginx/sites-enabled/
|
||||
|
||||
RUN apt -y autoremove \
|
||||
&& apt -y purge --auto-remove gcc curl \
|
||||
&& rm -rf /var/lib/apt \
|
||||
&& apt clean
|
||||
|
||||
### CRON
|
||||
RUN true \
|
||||
&& echo '0 4,8,12,16,20 * * * bash /backup.sh >> /var/log/cronj.log 2>&1' > /etc/cron.d/backups \
|
||||
&& echo '' >> /etc/cron.d/backups \
|
||||
&& chmod 0644 /etc/cron.d/backups \
|
||||
&& crontab /etc/cron.d/backups \
|
||||
&& touch /var/log/cronj.log
|
||||
|
||||
### COPY
|
||||
COPY ./backup.sh ./restore.sh ./entrypoint.sh /
|
||||
|
||||
### on enter/exit, rsync to/from /var/lib/mysql and /mnt
|
||||
ENTRYPOINT bash /entrypoint.sh
|
||||
21
firefly/postgres/backup.sh
Executable file
21
firefly/postgres/backup.sh
Executable file
@@ -0,0 +1,21 @@
|
||||
#! /bin/bash
|
||||
|
||||
set -e
|
||||
set -x
|
||||
service postgresql start
|
||||
thisback="/mnt/back/$(date -u +%Y%m%d%H%M%S).dump"
|
||||
rm -rf "$thisback" || true
|
||||
mkdir -p "$(dirname "$thisback")"
|
||||
pg_dump postgres://ffly:pwd@localhost/fireflyiii --clean > "$thisback"
|
||||
service postgresql start
|
||||
n=$(ls /mnt/back | wc -l)
|
||||
if ((n<=25)); then
|
||||
echo "No old backups to purge" >&2
|
||||
exit 0
|
||||
fi
|
||||
((m=n-25))
|
||||
stale=($(find /mnt/back/ -mindepth 1 -maxdepth 1 | sort | head -n $m))
|
||||
echo "Purging: rm -rf ${stale[@]}" >&2
|
||||
rm -rf "${stale[@]}"
|
||||
remaining=($(find /mnt/back/ -mindepth 1 -maxdepth 1 | sort))
|
||||
echo "Remains: ${remaining[@]}" >&2
|
||||
15
firefly/postgres/build.sh
Executable file
15
firefly/postgres/build.sh
Executable file
@@ -0,0 +1,15 @@
|
||||
#! /bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
mkdir -p $(pwd)/tmp
|
||||
|
||||
docker build -t dev:dev .
|
||||
docker run \
|
||||
--rm \
|
||||
-it \
|
||||
-p 9031:9031 \
|
||||
-v $PWD/tmp:/mnt \
|
||||
dev:dev
|
||||
|
||||
# -v $(pwd)/tmp:/mnt \
|
||||
16
firefly/postgres/entrypoint.sh
Executable file
16
firefly/postgres/entrypoint.sh
Executable file
@@ -0,0 +1,16 @@
|
||||
#! /bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
echo " : servicing" >&2
|
||||
for s in postgresql nginx php7.3-fpm cron; do
|
||||
service $s restart
|
||||
done
|
||||
echo " : restoring" >&2
|
||||
bash /restore.sh $i
|
||||
echo " : backing" >&2
|
||||
bash /backup.sh
|
||||
echo " : sleeping" >&2
|
||||
sleep 10
|
||||
echo " : pausering" >&2
|
||||
exec /xfer/pauser
|
||||
102
firefly/postgres/env
Executable file
102
firefly/postgres/env
Executable file
@@ -0,0 +1,102 @@
|
||||
# You can leave this on "local". If you change it to production most console commands will ask for extra confirmation.
|
||||
# Never set it to "testing".
|
||||
APP_ENV=local
|
||||
|
||||
# Set to true if you want to see debug information in error screens.
|
||||
APP_DEBUG=true
|
||||
|
||||
# This should be your email address
|
||||
SITE_OWNER=admin@email.com
|
||||
|
||||
# The encryption key for your database and sessions. Keep this very secure.
|
||||
# If you generate a new one all existing data must be considered LOST.
|
||||
# Change it to a string of exactly 32 chars or use command `php artisan key:generate` to generate it
|
||||
APP_KEY=11111111111111111111111111111111
|
||||
|
||||
# Change this value to your preferred time zone.
|
||||
# Example: Europe/Amsterdam
|
||||
TZ=America/Chicago
|
||||
|
||||
# APP_URL and TRUSTED_PROXIES are useful when using Docker and/or a reverse proxy.
|
||||
APP_URL=http://localhost
|
||||
TRUSTED_PROXIES=
|
||||
|
||||
# The log channel defines where your log entries go to.
|
||||
LOG_CHANNEL=daily
|
||||
|
||||
# Database credentials. Make sure the database exists. I recommend a dedicated user for Firefly III
|
||||
# For other database types, please see the FAQ: http://firefly-iii.readthedocs.io/en/latest/support/faq.html
|
||||
DB_CONNECTION=pgsql
|
||||
DB_HOST=127.0.0.1
|
||||
DB_PORT=5432
|
||||
DB_DATABASE=fireflyiii
|
||||
DB_USERNAME=ffly
|
||||
DB_PASSWORD=pwd
|
||||
|
||||
# 'daily' is the default logging mode giving you 5 daily rotated log files in /storage/logs/.
|
||||
# Several other options exist. You can use 'single' for one big fat error log (not recommended).
|
||||
# Also available are 'syslog' and 'errorlog' which will log to the system itself.
|
||||
APP_LOG=daily
|
||||
|
||||
# Log level. You can set this from least severe to most severe:
|
||||
# debug, info, notice, warning, error, critical, alert, emergency
|
||||
# If you set it to debug your logs will grow large, and fast. If you set it to emergency probably
|
||||
# nothing will get logged, ever.
|
||||
APP_LOG_LEVEL=notice
|
||||
|
||||
# If you're looking for performance improvements, you could install memcached.
|
||||
CACHE_DRIVER=file
|
||||
SESSION_DRIVER=file
|
||||
|
||||
# Cookie settings. Should not be necessary to change these.
|
||||
COOKIE_PATH="/"
|
||||
COOKIE_DOMAIN=
|
||||
COOKIE_SECURE=false
|
||||
|
||||
# If you want Firefly III to mail you, update these settings
|
||||
MAIL_DRIVER=smtp
|
||||
MAIL_HOST=smtp.server.com
|
||||
MAIL_PORT=587
|
||||
MAIL_FROM=<from_email>
|
||||
MAIL_USERNAME=<email_username>
|
||||
MAIL_PASSWORD=<user_password>
|
||||
MAIL_ENCRYPTION=tls
|
||||
|
||||
# Firefly III can send you the following messages
|
||||
SEND_REGISTRATION_MAIL=true
|
||||
SEND_ERROR_MESSAGE=true
|
||||
|
||||
# Set a Mapbox API key here (see mapbox.com) so there might be a map available at various places.
|
||||
MAPBOX_API_KEY=
|
||||
|
||||
# Set a Fixer IO API key here (see https://fixer.io) to enable live currency exchange rates.
|
||||
# Please note that this will only work for paid fixer.io accounts because they severly limited
|
||||
# the free API up to the point where you might as well offer nothing.
|
||||
FIXER_API_KEY=
|
||||
|
||||
# If you wish to track your own behavior over Firefly III, set a valid analytics tracker ID here.
|
||||
ANALYTICS_ID=
|
||||
|
||||
# Most parts of the database are encrypted by default, but you can turn this off if you want to.
|
||||
# This makes it easier to migrate your database. Not that some fields will never be decrypted.
|
||||
USE_ENCRYPTION=true
|
||||
|
||||
# Leave the following configuration vars as is.
|
||||
# Unless you like to tinker and know what you're doing.
|
||||
APP_NAME=FireflyIII
|
||||
BROADCAST_DRIVER=log
|
||||
QUEUE_DRIVER=sync
|
||||
REDIS_HOST=127.0.0.1
|
||||
REDIS_PASSWORD=null
|
||||
REDIS_PORT=6379
|
||||
CACHE_PREFIX=firefly
|
||||
SEARCH_RESULT_LIMIT=50
|
||||
PUSHER_KEY=
|
||||
PUSHER_SECRET=
|
||||
PUSHER_ID=
|
||||
DEMO_USERNAME=
|
||||
DEMO_PASSWORD=
|
||||
IS_DOCKER=true
|
||||
IS_SANDSTORM=false
|
||||
BUNQ_USE_SANDBOX=false
|
||||
IS_HEROKU=false
|
||||
29
firefly/postgres/firefly-iii.conf
Executable file
29
firefly/postgres/firefly-iii.conf
Executable file
@@ -0,0 +1,29 @@
|
||||
server {
|
||||
listen 9031;
|
||||
listen [::]:9031;
|
||||
|
||||
root /opt/firefly-iii/public;
|
||||
|
||||
# Add index.php to the list if you are using PHP
|
||||
client_max_body_size 300M;
|
||||
index index.html index.htm index.php;
|
||||
|
||||
# Load configuration files for the default server block.
|
||||
include /etc/nginx/default.d/*.conf;
|
||||
location ~ \.php$ {
|
||||
try_files $uri =404;
|
||||
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
|
||||
fastcgi_index index.php;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
include fastcgi_params;
|
||||
|
||||
}
|
||||
|
||||
index index.php index.htm index.html;
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.php?$query_string;
|
||||
autoindex on;
|
||||
sendfile off;
|
||||
}
|
||||
}
|
||||
20
firefly/postgres/pause/main.c
Executable file
20
firefly/postgres/pause/main.c
Executable file
@@ -0,0 +1,20 @@
|
||||
#include <stdio.h>
|
||||
#include <signal.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int main() {
|
||||
int stat;
|
||||
int sig;
|
||||
sigset_t set;
|
||||
sigemptyset(&set);
|
||||
printf("add signal SIGINT: %i\n", sigaddset(&set, SIGINT));
|
||||
printf("add signal SIGKILL: %i\n", sigaddset(&set, SIGKILL));
|
||||
printf("add signal SIGTERM: %i\n", sigaddset(&set, SIGTERM));
|
||||
sigprocmask(SIG_BLOCK, &set, NULL);
|
||||
printf("Waiting...\n");
|
||||
stat = sigwait(&set, &sig);
|
||||
printf("Wait complete: %i (%i)\n", sig, stat);
|
||||
printf("Backed: %i\n", system("bash /backup.sh"));
|
||||
printf("Bye-bye!\n");
|
||||
return 0;
|
||||
}
|
||||
38
firefly/postgres/restore.sh
Executable file
38
firefly/postgres/restore.sh
Executable file
@@ -0,0 +1,38 @@
|
||||
#! /bin/bash
|
||||
|
||||
skip=${1:-0}
|
||||
set -x
|
||||
set -e
|
||||
backups="$(find /mnt/back/ -maxdepth 1 -mindepth 1 | grep -v '\/\.' | sort -r)"
|
||||
if [ -z "${backups}" ]; then
|
||||
echo "ERR: no backups to restore" >&2
|
||||
exit 0
|
||||
fi
|
||||
tried=0
|
||||
echo Trying backups ${backups}... >&2
|
||||
for lastback in ${backups}; do
|
||||
((tried+=1))
|
||||
if ((tried<=skip)); then
|
||||
continue
|
||||
fi
|
||||
if (
|
||||
echo Trying backup from $lastback >&2
|
||||
set -e
|
||||
service postgresql start
|
||||
psql postgres://ffly:pwd@localhost/fireflyiii < "$lastback"
|
||||
service postgresql start
|
||||
n=0
|
||||
until service postgresql status || ((n>10)); do
|
||||
sleep 5
|
||||
((n+=1))
|
||||
done
|
||||
until service postgresql status | grep -E 'down|online'; do
|
||||
sleep 5
|
||||
done
|
||||
service postgresql status | grep online
|
||||
); then
|
||||
exit 0
|
||||
fi
|
||||
done
|
||||
echo "ERR: could not load any backup" >&2
|
||||
exit 1
|
||||
50
firefly/postgres/script.sh
Executable file
50
firefly/postgres/script.sh
Executable file
@@ -0,0 +1,50 @@
|
||||
#! /bin/bash
|
||||
|
||||
set -e
|
||||
set -u
|
||||
|
||||
apt -y update && apt -y upgrade && apt -y autoremove
|
||||
DEBIAN_FRONTEND=noninteractive apt -y install tzdata
|
||||
apt -y install vim locales language-pack-en-base
|
||||
|
||||
echo '127.0.0.1 firefly-iii-domain.com firefly-iii localhost' >> /etc/hosts
|
||||
|
||||
apt -y install fail2ban
|
||||
|
||||
apt -y install mariadb-server nginx php-fpm php7.3-mysql php-curl php-gd php-bcmath php-zip php-intl php-mbstring php-xml
|
||||
|
||||
service mysql start
|
||||
echo 'FLUSH PRIVILEGES; ' \
|
||||
'USE mysql; ' \
|
||||
'UPDATE user SET authentication_string=PASSWORD("pwd") WHERE User='"'"'root'"'"'; ' \
|
||||
'UPDATE user SET plugin="mysql_native_password" WHERE User='"'"'root'"'"'; ' \
|
||||
| mysql -u root || true
|
||||
service mysql restart
|
||||
sleep 5
|
||||
|
||||
echo 'create database fireflyiii character set utf8 collate utf8_bin; ' \
|
||||
'grant all privileges on fireflyiii.* to fireflyiii@localhost identified by '"'"'pwd'"'"'; ' \
|
||||
| mysql -uroot -ppwd
|
||||
service mysql restart
|
||||
|
||||
apt -y install curl
|
||||
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
|
||||
|
||||
cd /opt
|
||||
composer create-project grumpydictator/firefly-iii --no-dev --prefer-dist firefly-iii 4.7.4
|
||||
|
||||
cp /copied/env /opt/firefly-iii/.env
|
||||
|
||||
cd firefly-iii
|
||||
php artisan migrate:refresh --seed
|
||||
php artisan passport:install
|
||||
|
||||
chown -R www-data:www-data /opt/firefly-iii/
|
||||
|
||||
rm /etc/nginx/sites-enabled/default
|
||||
touch /etc/nginx/sites-available/firefly-iii.conf
|
||||
ln -s /etc/nginx/sites-available/firefly-iii.conf /etc/nginx/sites-enabled/firefly-iii.conf
|
||||
openssl dhparam 2048 > /etc/nginx/dhparam.pem
|
||||
cp /copied/firefly-iii.conf /etc/nginx/sites-enabled/firefly-iii.conf
|
||||
|
||||
mkdir -p /run/php
|
||||
107
firefly/ubuntu-old/Dockerfile
Executable file
107
firefly/ubuntu-old/Dockerfile
Executable file
@@ -0,0 +1,107 @@
|
||||
FROM ubuntu:18.10
|
||||
|
||||
### APT
|
||||
RUN apt -y update \
|
||||
&& DEBIAN_FRONTEND=noninteractive apt -y install tzdata \
|
||||
&& apt -y install locales language-pack-en-base \
|
||||
&& echo '127.0.0.1 firefly-iii-domain.com firefly-iii localhost' >> /etc/hosts \
|
||||
&& apt -y install \
|
||||
mariadb-server \
|
||||
nginx \
|
||||
php-fpm php7.2-mysql php-curl php-gd php-bcmath php-zip php-intl php-mbstring php-xml \
|
||||
curl \
|
||||
gcc \
|
||||
cron \
|
||||
&& rm /etc/nginx/sites-enabled/default \
|
||||
&& touch /etc/nginx/sites-available/firefly-iii.conf \
|
||||
&& ln -s /etc/nginx/sites-available/firefly-iii.conf /etc/nginx/sites-enabled/firefly-iii.conf \
|
||||
&& openssl dhparam 2048 > /etc/nginx/dhparam.pem \
|
||||
&& service mysql start && sleep 5 \
|
||||
&& echo 'FLUSH PRIVILEGES; ' \
|
||||
'USE mysql; ' \
|
||||
'UPDATE user SET authentication_string=PASSWORD("pwd") WHERE User='"'"'root'"'"'; ' \
|
||||
'UPDATE user SET plugin="mysql_native_password" WHERE User='"'"'root'"'"'; ' \
|
||||
| mysql --user=root mysql || true && echo made user \
|
||||
&& service mysql stop && sleep 5 \
|
||||
&& sed 's/^password .*/password = pwd/' /etc/mysql/debian.cnf > /tmp/cnf \
|
||||
&& mv /tmp/cnf /etc/mysql/debian.cnf \
|
||||
&& service mysql start && sleep 5 \
|
||||
&& echo 'create database fireflyiii character set utf8 collate utf8_bin; ' \
|
||||
'grant all privileges on fireflyiii.* to fireflyiii@localhost identified by '"'"'pwd'"'"'; ' \
|
||||
| mysql --user=root --password=pwd mysql && echo made fireflyiii
|
||||
|
||||
### PHP
|
||||
RUN service mysql start && sleep 10 \
|
||||
&& curl -sS https://getcomposer.org/installer \
|
||||
| php -- --install-dir=/usr/local/bin --filename=composer \
|
||||
&& cd /opt \
|
||||
&& composer create-project grumpydictator/firefly-iii --no-dev --prefer-dist firefly-iii 4.7.4
|
||||
COPY ./env /opt/firefly-iii/.env
|
||||
RUN service mysql start && sleep 10 \
|
||||
&& cd /opt/firefly-iii \
|
||||
&& php artisan migrate:refresh --seed \
|
||||
&& php artisan passport:install \
|
||||
&& chown -R www-data:www-data /opt/firefly-iii \
|
||||
&& mkdir -p /run/php
|
||||
|
||||
### WAIT
|
||||
COPY ./pause /xfer/
|
||||
RUN cd /xfer && gcc main.c -o /xfer/pauser
|
||||
|
||||
### CONFIG
|
||||
COPY ./env /opt/firefly-iii/.env
|
||||
COPY ./firefly-iii.conf /etc/nginx/sites-enabled/
|
||||
|
||||
RUN apt -y autoremove \
|
||||
&& apt -y purge --auto-remove gcc curl \
|
||||
&& rm -rf /var/lib/apt \
|
||||
&& apt clean
|
||||
|
||||
### CRON
|
||||
RUN echo \
|
||||
'lastback="$(find /mnt/back/ -maxdepth 1 -mindepth 1 | sort | tail -n 1)"; ' \
|
||||
'mkdir -p $lastback/inc; ' \
|
||||
'thisback="$lastback/inc/$(date -u +%Y%m%d%H%M)/"; ' \
|
||||
'rm -rf $thisback; ' \
|
||||
'mariabackup --backup --target-dir="$thisback" --user root --password=pwd --incremental-basedir $lastback/full; ' \
|
||||
> /backup-inc.sh \
|
||||
&& echo \
|
||||
'set -e; ' \
|
||||
'service mysql start; ' \
|
||||
'thisback="/mnt/back/$(date -u +%Y%m%d)"/full; ' \
|
||||
'mkdir -p $thisback; ' \
|
||||
'rm -rf "$(dirname "$thisback")"; ' \
|
||||
'mkdir -p "$(dirname "$thisback")"; ' \
|
||||
'mariabackup --backup --target-dir="$thisback" --user=root --password=pwd; ' \
|
||||
> /backup.sh \
|
||||
&& echo \
|
||||
'set -e; ' \
|
||||
'rm -rf /var/lib/mysql-old; ' \
|
||||
'mkdir -p /mnt/back; ' \
|
||||
'lastback="$(find /mnt/back/ -maxdepth 1 -mindepth 1 | sort | tail -n 1)"; ' \
|
||||
'if [ -z "$lastback" ]; then exit 0; fi; ' \
|
||||
'service mysql stop || true; ' \
|
||||
'restoring=/tmp/restoring; ' \
|
||||
'cp -r "${lastback}/full" "$restoring"; ' \
|
||||
'mariabackup --prepare --target-dir="$restoring" --user=root --password=pwd --apply-log-only || true; ' \
|
||||
'inc_back="$(find $lastback/inc/ -maxdepth 1 -mindepth 1 | sort | tail -n 1)"; ' \
|
||||
'echo --- inc restore $inc_back ---; ' \
|
||||
'mariabackup --prepare --target-dir="$restoring" --user=root --password=pwd --incremental-dir "$inc_back" --apply-log-only || true; ' \
|
||||
'mv /var/lib/mysql /var/lib/mysql-old; ' \
|
||||
'mariabackup --copy-back --target-dir="$restoring" --user=root --password=pwd; ' \
|
||||
'rm -rf "$restoring"; ' \
|
||||
'chown -R mysql:mysql /var/lib/mysql; ' \
|
||||
'service mysql start; ' \
|
||||
> /restore.sh \
|
||||
&& echo '0 * * * * bash /backup-inc.sh >> /var/log/cronj.log 2>&1' > /etc/cron.d/backups \
|
||||
&& echo '' >> /etc/cron.d/backups \
|
||||
&& chmod 0644 /etc/cron.d/backups \
|
||||
&& crontab /etc/cron.d/backups \
|
||||
&& touch /var/log/cronj.log
|
||||
|
||||
### on enter/exit, rsync to/from /var/lib/mysql and /mnt
|
||||
ENTRYPOINT true \
|
||||
&& bash /restore.sh \
|
||||
&& bash /backup.sh \
|
||||
&& for s in mysql nginx php7.2-fpm cron; do service $s restart ; done && sleep 10 \
|
||||
&& exec /xfer/pauser
|
||||
6
firefly/ubuntu-old/build.sh
Executable file
6
firefly/ubuntu-old/build.sh
Executable file
@@ -0,0 +1,6 @@
|
||||
#! /bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
docker build -t dev:dev .
|
||||
docker run --rm -it -p 8031:8031 dev:dev
|
||||
102
firefly/ubuntu-old/env
Executable file
102
firefly/ubuntu-old/env
Executable file
@@ -0,0 +1,102 @@
|
||||
# You can leave this on "local". If you change it to production most console commands will ask for extra confirmation.
|
||||
# Never set it to "testing".
|
||||
APP_ENV=local
|
||||
|
||||
# Set to true if you want to see debug information in error screens.
|
||||
APP_DEBUG=true
|
||||
|
||||
# This should be your email address
|
||||
SITE_OWNER=admin@email.com
|
||||
|
||||
# The encryption key for your database and sessions. Keep this very secure.
|
||||
# If you generate a new one all existing data must be considered LOST.
|
||||
# Change it to a string of exactly 32 chars or use command `php artisan key:generate` to generate it
|
||||
APP_KEY=11111111111111111111111111111111
|
||||
|
||||
# Change this value to your preferred time zone.
|
||||
# Example: Europe/Amsterdam
|
||||
TZ=America/Chicago
|
||||
|
||||
# APP_URL and TRUSTED_PROXIES are useful when using Docker and/or a reverse proxy.
|
||||
APP_URL=http://localhost
|
||||
TRUSTED_PROXIES=
|
||||
|
||||
# The log channel defines where your log entries go to.
|
||||
LOG_CHANNEL=daily
|
||||
|
||||
# Database credentials. Make sure the database exists. I recommend a dedicated user for Firefly III
|
||||
# For other database types, please see the FAQ: http://firefly-iii.readthedocs.io/en/latest/support/faq.html
|
||||
DB_CONNECTION=mysql
|
||||
DB_HOST=127.0.0.1
|
||||
DB_PORT=3306
|
||||
DB_DATABASE=fireflyiii
|
||||
DB_USERNAME=fireflyiii
|
||||
DB_PASSWORD=pwd
|
||||
|
||||
# 'daily' is the default logging mode giving you 5 daily rotated log files in /storage/logs/.
|
||||
# Several other options exist. You can use 'single' for one big fat error log (not recommended).
|
||||
# Also available are 'syslog' and 'errorlog' which will log to the system itself.
|
||||
APP_LOG=daily
|
||||
|
||||
# Log level. You can set this from least severe to most severe:
|
||||
# debug, info, notice, warning, error, critical, alert, emergency
|
||||
# If you set it to debug your logs will grow large, and fast. If you set it to emergency probably
|
||||
# nothing will get logged, ever.
|
||||
APP_LOG_LEVEL=notice
|
||||
|
||||
# If you're looking for performance improvements, you could install memcached.
|
||||
CACHE_DRIVER=file
|
||||
SESSION_DRIVER=file
|
||||
|
||||
# Cookie settings. Should not be necessary to change these.
|
||||
COOKIE_PATH="/"
|
||||
COOKIE_DOMAIN=
|
||||
COOKIE_SECURE=false
|
||||
|
||||
# If you want Firefly III to mail you, update these settings
|
||||
MAIL_DRIVER=smtp
|
||||
MAIL_HOST=smtp.server.com
|
||||
MAIL_PORT=587
|
||||
MAIL_FROM=<from_email>
|
||||
MAIL_USERNAME=<email_username>
|
||||
MAIL_PASSWORD=<user_password>
|
||||
MAIL_ENCRYPTION=tls
|
||||
|
||||
# Firefly III can send you the following messages
|
||||
SEND_REGISTRATION_MAIL=true
|
||||
SEND_ERROR_MESSAGE=true
|
||||
|
||||
# Set a Mapbox API key here (see mapbox.com) so there might be a map available at various places.
|
||||
MAPBOX_API_KEY=
|
||||
|
||||
# Set a Fixer IO API key here (see https://fixer.io) to enable live currency exchange rates.
|
||||
# Please note that this will only work for paid fixer.io accounts because they severly limited
|
||||
# the free API up to the point where you might as well offer nothing.
|
||||
FIXER_API_KEY=
|
||||
|
||||
# If you wish to track your own behavior over Firefly III, set a valid analytics tracker ID here.
|
||||
ANALYTICS_ID=
|
||||
|
||||
# Most parts of the database are encrypted by default, but you can turn this off if you want to.
|
||||
# This makes it easier to migrate your database. Not that some fields will never be decrypted.
|
||||
USE_ENCRYPTION=true
|
||||
|
||||
# Leave the following configuration vars as is.
|
||||
# Unless you like to tinker and know what you're doing.
|
||||
APP_NAME=FireflyIII
|
||||
BROADCAST_DRIVER=log
|
||||
QUEUE_DRIVER=sync
|
||||
REDIS_HOST=127.0.0.1
|
||||
REDIS_PASSWORD=null
|
||||
REDIS_PORT=6379
|
||||
CACHE_PREFIX=firefly
|
||||
SEARCH_RESULT_LIMIT=50
|
||||
PUSHER_KEY=
|
||||
PUSHER_SECRET=
|
||||
PUSHER_ID=
|
||||
DEMO_USERNAME=
|
||||
DEMO_PASSWORD=
|
||||
IS_DOCKER=true
|
||||
IS_SANDSTORM=false
|
||||
BUNQ_USE_SANDBOX=false
|
||||
IS_HEROKU=false
|
||||
29
firefly/ubuntu-old/firefly-iii.conf
Executable file
29
firefly/ubuntu-old/firefly-iii.conf
Executable file
@@ -0,0 +1,29 @@
|
||||
server {
|
||||
listen 8031;
|
||||
listen [::]:8031;
|
||||
|
||||
root /opt/firefly-iii/public;
|
||||
|
||||
# Add index.php to the list if you are using PHP
|
||||
client_max_body_size 300M;
|
||||
index index.html index.htm index.php;
|
||||
|
||||
# Load configuration files for the default server block.
|
||||
include /etc/nginx/default.d/*.conf;
|
||||
location ~ \.php$ {
|
||||
try_files $uri =404;
|
||||
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
|
||||
fastcgi_index index.php;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
include fastcgi_params;
|
||||
|
||||
}
|
||||
|
||||
index index.php index.htm index.html;
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.php?$query_string;
|
||||
autoindex on;
|
||||
sendfile off;
|
||||
}
|
||||
}
|
||||
20
firefly/ubuntu-old/pause/main.c
Executable file
20
firefly/ubuntu-old/pause/main.c
Executable file
@@ -0,0 +1,20 @@
|
||||
#include <stdio.h>
|
||||
#include <signal.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int main() {
|
||||
int stat;
|
||||
int sig;
|
||||
sigset_t set;
|
||||
sigemptyset(&set);
|
||||
printf("add signal SIGINT: %i\n", sigaddset(&set, SIGINT));
|
||||
printf("add signal SIGKILL: %i\n", sigaddset(&set, SIGKILL));
|
||||
printf("add signal SIGTERM: %i\n", sigaddset(&set, SIGTERM));
|
||||
sigprocmask(SIG_BLOCK, &set, NULL);
|
||||
printf("Waiting...\n");
|
||||
stat = sigwait(&set, &sig);
|
||||
printf("Wait complete: %i (%i)\n", sig, stat);
|
||||
printf("Backed incremental: %i\n", system("bash /backup-inc.sh"));
|
||||
printf("Stopped mysql: %i\n", system("mysqladmin shutdown -ppwd"));
|
||||
return 0;
|
||||
}
|
||||
50
firefly/ubuntu-old/script.sh
Executable file
50
firefly/ubuntu-old/script.sh
Executable file
@@ -0,0 +1,50 @@
|
||||
#! /bin/bash
|
||||
|
||||
set -e
|
||||
set -u
|
||||
|
||||
apt -y update && apt -y upgrade && apt -y autoremove
|
||||
DEBIAN_FRONTEND=noninteractive apt -y install tzdata
|
||||
apt -y install vim locales language-pack-en-base
|
||||
|
||||
echo '127.0.0.1 firefly-iii-domain.com firefly-iii localhost' >> /etc/hosts
|
||||
|
||||
apt -y install fail2ban
|
||||
|
||||
apt -y install mariadb-server nginx php-fpm php7.2-mysql php-curl php-gd php-bcmath php-zip php-intl php-mbstring php-xml
|
||||
|
||||
service mysql start
|
||||
echo 'FLUSH PRIVILEGES; ' \
|
||||
'USE mysql; ' \
|
||||
'UPDATE user SET authentication_string=PASSWORD("pwd") WHERE User='"'"'root'"'"'; ' \
|
||||
'UPDATE user SET plugin="mysql_native_password" WHERE User='"'"'root'"'"'; ' \
|
||||
| mysql -u root || true
|
||||
service mysql restart
|
||||
sleep 5
|
||||
|
||||
echo 'create database fireflyiii character set utf8 collate utf8_bin; ' \
|
||||
'grant all privileges on fireflyiii.* to fireflyiii@localhost identified by '"'"'pwd'"'"'; ' \
|
||||
| mysql -uroot -ppwd
|
||||
service mysql restart
|
||||
|
||||
apt -y install curl
|
||||
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
|
||||
|
||||
cd /opt
|
||||
composer create-project grumpydictator/firefly-iii --no-dev --prefer-dist firefly-iii 4.7.4
|
||||
|
||||
cp /copied/env /opt/firefly-iii/.env
|
||||
|
||||
cd firefly-iii
|
||||
php artisan migrate:refresh --seed
|
||||
php artisan passport:install
|
||||
|
||||
chown -R www-data:www-data /opt/firefly-iii/
|
||||
|
||||
rm /etc/nginx/sites-enabled/default
|
||||
touch /etc/nginx/sites-available/firefly-iii.conf
|
||||
ln -s /etc/nginx/sites-available/firefly-iii.conf /etc/nginx/sites-enabled/firefly-iii.conf
|
||||
openssl dhparam 2048 > /etc/nginx/dhparam.pem
|
||||
cp /copied/firefly-iii.conf /etc/nginx/sites-enabled/firefly-iii.conf
|
||||
|
||||
mkdir -p /run/php
|
||||
6
ledger/cli/Dockerfile
Executable file
6
ledger/cli/Dockerfile
Executable file
@@ -0,0 +1,6 @@
|
||||
FROM dcycle/ledger:1
|
||||
|
||||
RUN touch /tmp/test
|
||||
|
||||
#CMD []
|
||||
#ENTRYPOINT ["./ledger", "-f", "/tmp/test", "reg"]
|
||||
23
mizzer/economizzer
Executable file
23
mizzer/economizzer
Executable file
@@ -0,0 +1,23 @@
|
||||
FROM centos:7.5.1804
|
||||
|
||||
RUN yum install -y epel-release yum-utils \
|
||||
&& yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm \
|
||||
&& yum-config-manager --enable remi-php72 \
|
||||
&& yum install -y php php-common php-opcache php-mcrypt php-cli php-gd php-curl php-mysqlnd
|
||||
|
||||
RUN yum install -y libapache2-mod-php php-mbstring php-xml git unzip
|
||||
|
||||
RUN cd / \
|
||||
&& curl -sS https://getcomposer.org/installer \
|
||||
| php
|
||||
|
||||
RUN yum install -y php-pecl-zip
|
||||
|
||||
RUN cd / \
|
||||
&& git clone https://github.com/gugoan/economizzer.git \
|
||||
&& ls \
|
||||
&& cd /economizzer \
|
||||
&& php /composer.phar global require "fxp/composer-asset-plugin:^1.3.1" phpoffice/phpspreadsheet ext-zip kartik-v/yii2-export \
|
||||
&& php /composer.phar install
|
||||
|
||||
ENTRYPOINT ["bash"]
|
||||
3
mizzer/economizzer-build.sh
Executable file
3
mizzer/economizzer-build.sh
Executable file
@@ -0,0 +1,3 @@
|
||||
#! /bin/bash
|
||||
cd "$(dirname "${BASH_SOURCE[0]}")"
|
||||
docker build -f economizzer -t dev:dev .
|
||||
46
silverstrike/.Dockerfile
Executable file
46
silverstrike/.Dockerfile
Executable file
@@ -0,0 +1,46 @@
|
||||
FROM ubuntu:18.04 as builder
|
||||
|
||||
### SYS
|
||||
RUN export DEBIAN_FRONTEND=noninteractive; \
|
||||
apt -y update || true; \
|
||||
apt -y install tzdata; \
|
||||
ln -fs /usr/share/zoneinfo/America/Denver /etc/localtime; \
|
||||
dpkg-reconfigure --frontend noninteractive tzdata; \
|
||||
apt -y install \
|
||||
curl \
|
||||
rsync \
|
||||
cron \
|
||||
postgresql postgresql-contrib \
|
||||
&& mkdir -p /mnt/save
|
||||
|
||||
### APP
|
||||
RUN \
|
||||
apt install nginx postgresql uwsgi uwsgi-plugin-python3 python3-venv git
|
||||
|
||||
### POSTGRES
|
||||
RUN useradd -d /home/postgres -ms /bin/bash -g postgres -G sudo postgres
|
||||
USER postgres
|
||||
RUN service postgresql start && sleep 10 \
|
||||
&& psql --command "CREATE USER ss WITH SUPERUSER PASSWORD 'ss';" \
|
||||
&& createdb -O ss ss \
|
||||
&& psql --command "CREATE DATABASE silverstrikedb;" \
|
||||
&& psql --command "GRANT ALL PRIVILEGES ON DATABASE silverstrikedb TO ss;"
|
||||
USER root
|
||||
|
||||
### CRON BACKUPS
|
||||
RUN true \
|
||||
&& echo 'b=$(date +%Y%m%d%H%M%S) && mkdir -p /mnt/save/$b && pg_dump $DATABASE_URL --clean > /mnt/save/$b/pg.dump' > /backup.sh \
|
||||
&& echo 'b=$(find /mnt/save -type f | sort | tail -n 1); if [ -n "$b" ]; then echo restoring $b; psql $DATABASE_URL < "$b"; fi && service postgresql start;' > /restore.sh \
|
||||
&& echo '0 4,8,12,16,20 * * * bash /backup.sh >> /var/log/cronj.log 2>&1' > /etc/cron.d/backups \
|
||||
&& echo '' >> /etc/cron.d/backups \
|
||||
&& chmod 0644 /etc/cron.d/backups \
|
||||
&& touch /var/log/cronj.log
|
||||
|
||||
### FINAL
|
||||
ENV DATABASE_URL=postgres://ss:ss@localhost/silverstrikedb?sslmode=disable
|
||||
ENV SECRET_KEY=AimmBfzjdWcVN3rQs8YawbUowv5R8Eex
|
||||
ENV ALLOWED_HOSTS=*
|
||||
ENTRYPOINT \
|
||||
until psql $DATABASE_URL < /dev/null; do sleep 5; done \
|
||||
&& bash /restore.sh \
|
||||
&& sleep 5 && python manage.py migrate && exec uwsgi
|
||||
2
silverstrike/fork/.dockerignore
Executable file
2
silverstrike/fork/.dockerignore
Executable file
@@ -0,0 +1,2 @@
|
||||
Dockerfile
|
||||
**/*.sw*
|
||||
42
silverstrike/fork/Dockerfile
Executable file
42
silverstrike/fork/Dockerfile
Executable file
@@ -0,0 +1,42 @@
|
||||
FROM ubuntu:18.04
|
||||
|
||||
# Copy the code
|
||||
ADD . /code
|
||||
WORKDIR /code
|
||||
|
||||
# install deps
|
||||
RUN apt-get update && apt-get install -y gcc libmariadbclient-dev python3-dev python3-pip && \
|
||||
pip3 install --no-cache-dir -r requirements.txt && \
|
||||
apt-get remove -y gcc && apt-get autoremove -y
|
||||
|
||||
# configure django
|
||||
ENV DJANGO_SETTINGS_MODULE=settings
|
||||
|
||||
# configure uwsgi
|
||||
ENV UWSGI_WSGI_FILE=wsgi.py UWSGI_HTTP=:8000 UWSGI_MASTER=1 UWSGI_WORKERS=2 UWSGI_THREADS=8 UWSGI_UID=1000 UWSGI_GID=2000 UWSGI_LAZY_APPS=1 UWSGI_WSGI_ENV_BEHAVIOR=holy
|
||||
|
||||
# collect static files
|
||||
RUN python3 manage.py collectstatic
|
||||
|
||||
#### POSTGRES
|
||||
RUN \
|
||||
apt -y install \
|
||||
curl \
|
||||
rsync \
|
||||
cron \
|
||||
postgresql postgresql-contrib \
|
||||
sudo \
|
||||
&& mkdir -p /mnt/save \
|
||||
&& service postgresql start
|
||||
USER postgres
|
||||
RUN service postgresql start \
|
||||
&& psql --command "CREATE USER ss WITH SUPERUSER PASSWORD 'ss';" \
|
||||
&& psql --command "CREATE DATABASE silverstrikedb;" \
|
||||
&& psql --command "GRANT ALL PRIVILEGES ON DATABASE silverstrikedb TO ss;"
|
||||
USER root
|
||||
|
||||
ENV ALLOWED_HOSTS=*
|
||||
ENV DATABASE_URL=postgres://ss:ss@localhost/silverstrikedb
|
||||
ENV SECRET_KEY=AimmBfzjdWcVN3rQs8YawbUowv5R8Eex
|
||||
|
||||
CMD service postgresql start && (until psql $DATABASE_URL < /dev/null; do sleep 5; done) && python3 manage.py migrate && uwsgi
|
||||
21
silverstrike/fork/LICENSE
Executable file
21
silverstrike/fork/LICENSE
Executable file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2017 - 2018 Simon Hanna
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
21
silverstrike/fork/docker-compose.yml
Executable file
21
silverstrike/fork/docker-compose.yml
Executable file
@@ -0,0 +1,21 @@
|
||||
---
|
||||
version: "3.2"
|
||||
services:
|
||||
app:
|
||||
environment:
|
||||
- ALLOWED_HOSTS='*'
|
||||
- DATABASE_URL=postgres://silverstrike:secretpass@database/silverstrikedb
|
||||
- SECRET_KEY=PLprXpLzxemgLD57GPQQ84SBZdLVKFYg
|
||||
image: simhnna/silverstrike
|
||||
links:
|
||||
- database:database
|
||||
ports:
|
||||
- 8000:8000
|
||||
database:
|
||||
environment:
|
||||
POSTGRES_DB: silverstrikedb
|
||||
POSTGRES_USER: silverstrike
|
||||
POSTGRES_PASSWORD: secretpass
|
||||
image: postgres:10.3
|
||||
volumes:
|
||||
- ./silverstrikedb:/var/lib/postgresql/data
|
||||
22
silverstrike/fork/manage.py
Executable file
22
silverstrike/fork/manage.py
Executable file
@@ -0,0 +1,22 @@
|
||||
#!/usr/bin/env python
|
||||
import os
|
||||
import sys
|
||||
|
||||
if __name__ == "__main__":
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
|
||||
try:
|
||||
from django.core.management import execute_from_command_line
|
||||
except ImportError:
|
||||
# The above import may fail for some other reason. Ensure that the
|
||||
# issue is really that Django is missing to avoid masking other
|
||||
# exceptions on Python 2.
|
||||
try:
|
||||
import django
|
||||
except ImportError:
|
||||
raise ImportError(
|
||||
"Couldn't import Django. Are you sure it's installed and "
|
||||
"available on your PYTHONPATH environment variable? Did you "
|
||||
"forget to activate a virtual environment?"
|
||||
)
|
||||
raise
|
||||
execute_from_command_line(sys.argv)
|
||||
BIN
silverstrike/fork/master.zip
Executable file
BIN
silverstrike/fork/master.zip
Executable file
Binary file not shown.
6
silverstrike/fork/requirements.txt
Executable file
6
silverstrike/fork/requirements.txt
Executable file
@@ -0,0 +1,6 @@
|
||||
silverstrike
|
||||
whitenoise
|
||||
uwsgi
|
||||
psycopg2-binary
|
||||
dj-database-url
|
||||
mysqlclient
|
||||
163
silverstrike/fork/settings.py
Executable file
163
silverstrike/fork/settings.py
Executable file
@@ -0,0 +1,163 @@
|
||||
"""
|
||||
Django settings for demo project.
|
||||
|
||||
Generated by 'django-admin startproject' using Django 1.10.3.
|
||||
|
||||
For more information on this file, see
|
||||
https://docs.djangoproject.com/en/1.10/topics/settings/
|
||||
|
||||
For the full list of settings and their values, see
|
||||
https://docs.djangoproject.com/en/1.10/ref/settings/
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
import dj_database_url
|
||||
|
||||
|
||||
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
|
||||
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
|
||||
# Quick-start development settings - unsuitable for production
|
||||
# See https://docs.djangoproject.com/en/1.10/howto/deployment/checklist/
|
||||
|
||||
# SECURITY WARNING: keep the secret key used in production secret!
|
||||
SECRET_KEY = os.environ.get('SECRET_KEY', 'PLprXpLzxemgLD57GPQQ84SBZdLVKFYg')
|
||||
|
||||
# SECURITY WARNING: don't run with debug turned on in production!
|
||||
DEBUG = False
|
||||
|
||||
ALLOWED_HOSTS = ['*']
|
||||
|
||||
SITE_ID = 1
|
||||
|
||||
# Application definition
|
||||
|
||||
INSTALLED_APPS = [
|
||||
'django.contrib.admin',
|
||||
'django.contrib.auth',
|
||||
'django.contrib.contenttypes',
|
||||
'django.contrib.humanize',
|
||||
'django.contrib.sessions',
|
||||
'django.contrib.messages',
|
||||
'django.contrib.staticfiles',
|
||||
'django.contrib.sites',
|
||||
'widget_tweaks',
|
||||
'silverstrike',
|
||||
'allauth',
|
||||
'allauth.account',
|
||||
'rest_framework',
|
||||
'rest_framework.authtoken'
|
||||
]
|
||||
|
||||
MIDDLEWARE = [
|
||||
'django.middleware.security.SecurityMiddleware',
|
||||
'whitenoise.middleware.WhiteNoiseMiddleware',
|
||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||
'django.middleware.locale.LocaleMiddleware',
|
||||
'django.middleware.common.CommonMiddleware',
|
||||
'django.middleware.csrf.CsrfViewMiddleware',
|
||||
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||
'django.contrib.messages.middleware.MessageMiddleware',
|
||||
'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
||||
]
|
||||
|
||||
ROOT_URLCONF = 'urls'
|
||||
|
||||
TEMPLATES = [
|
||||
{
|
||||
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
||||
'DIRS': [],
|
||||
'APP_DIRS': True,
|
||||
'OPTIONS': {
|
||||
'context_processors': [
|
||||
'django.template.context_processors.debug',
|
||||
'django.template.context_processors.request',
|
||||
'django.contrib.auth.context_processors.auth',
|
||||
'django.contrib.messages.context_processors.messages',
|
||||
],
|
||||
},
|
||||
},
|
||||
]
|
||||
|
||||
WSGI_APPLICATION = 'wsgi.application'
|
||||
|
||||
|
||||
# Database
|
||||
# https://docs.djangoproject.com/en/1.10/ref/settings/#databases
|
||||
|
||||
DATABASES = {
|
||||
'default': dj_database_url.config(conn_max_age=600)
|
||||
}
|
||||
|
||||
|
||||
|
||||
# Password validation
|
||||
# https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators
|
||||
|
||||
AUTH_PASSWORD_VALIDATORS = [
|
||||
{
|
||||
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
|
||||
},
|
||||
{
|
||||
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
|
||||
},
|
||||
{
|
||||
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
|
||||
},
|
||||
{
|
||||
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
|
||||
},
|
||||
]
|
||||
|
||||
AUTHENTICATION_BACKENDS = (
|
||||
'django.contrib.auth.backends.ModelBackend',
|
||||
'allauth.account.auth_backends.AuthenticationBackend',
|
||||
)
|
||||
|
||||
|
||||
# Internationalization
|
||||
# https://docs.djangoproject.com/en/1.10/topics/i18n/
|
||||
|
||||
LANGUAGE_CODE = 'en-us'
|
||||
|
||||
TIME_ZONE = 'UTC'
|
||||
|
||||
USE_I18N = True
|
||||
|
||||
USE_L10N = True
|
||||
|
||||
USE_TZ = True
|
||||
|
||||
|
||||
# Static files (CSS, JavaScript, Images)
|
||||
# https://docs.djangoproject.com/en/1.10/howto/static-files/
|
||||
|
||||
STATIC_URL = '/static/'
|
||||
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
|
||||
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
|
||||
|
||||
|
||||
LOGIN_REDIRECT_URL = 'index'
|
||||
LOGIN_URL = 'account_login'
|
||||
LOGOUT_URL = 'account_logout'
|
||||
ACCOUNT_LOGOUT_REDIRECT_URL = 'account_login'
|
||||
ACCOUNT_ADAPTER = 'signupadapter.SignupDisabledAdapter'
|
||||
|
||||
# Uncomment to prevent signup
|
||||
# ACCOUNT_ADAPTER = 'silverstrike.models.SignupDisabledAdapter'
|
||||
|
||||
REST_FRAMEWORK = {
|
||||
'DEFAULT_PERMISSION_CLASSES': [
|
||||
'rest_framework.permissions.IsAuthenticated'
|
||||
],
|
||||
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
|
||||
'PAGE_SIZE': 10,
|
||||
'DEFAULT_AUTHENTICATION_CLASSES': (
|
||||
'rest_framework.authentication.BasicAuthentication',
|
||||
'rest_framework.authentication.SessionAuthentication',
|
||||
'rest_framework.authentication.TokenAuthentication'
|
||||
)
|
||||
}
|
||||
|
||||
6
silverstrike/fork/signupadapter.py
Executable file
6
silverstrike/fork/signupadapter.py
Executable file
@@ -0,0 +1,6 @@
|
||||
from allauth.account.adapter import DefaultAccountAdapter
|
||||
|
||||
|
||||
class SignupDisabledAdapter(DefaultAccountAdapter):
|
||||
def is_open_for_signup(self, request):
|
||||
return False
|
||||
9
silverstrike/fork/urls.py
Executable file
9
silverstrike/fork/urls.py
Executable file
@@ -0,0 +1,9 @@
|
||||
from django.contrib import admin
|
||||
from django.urls import path, include
|
||||
from django.views.generic import RedirectView
|
||||
|
||||
|
||||
urlpatterns = [
|
||||
path('admin/', admin.site.urls),
|
||||
path('', include('silverstrike.urls')),
|
||||
]
|
||||
16
silverstrike/fork/wsgi.py
Executable file
16
silverstrike/fork/wsgi.py
Executable file
@@ -0,0 +1,16 @@
|
||||
"""
|
||||
WSGI config for demo project.
|
||||
|
||||
It exposes the WSGI callable as a module-level variable named ``application``.
|
||||
|
||||
For more information on this file, see
|
||||
https://docs.djangoproject.com/en/1.10/howto/deployment/wsgi/
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
from django.core.wsgi import get_wsgi_application
|
||||
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
|
||||
|
||||
application = get_wsgi_application()
|
||||
66
silverstrike/scratch/Dockerfile
Executable file
66
silverstrike/scratch/Dockerfile
Executable file
@@ -0,0 +1,66 @@
|
||||
FROM ubuntu:18.04 as builder
|
||||
|
||||
### SYS
|
||||
RUN export DEBIAN_FRONTEND=noninteractive; \
|
||||
apt -y update || true; \
|
||||
apt -y install tzdata; \
|
||||
ln -fs /usr/share/zoneinfo/America/Denver /etc/localtime; \
|
||||
dpkg-reconfigure --frontend noninteractive tzdata; \
|
||||
apt -y install \
|
||||
curl \
|
||||
rsync \
|
||||
cron \
|
||||
postgresql postgresql-contrib \
|
||||
&& mkdir -p /mnt/save
|
||||
|
||||
### POSTGRES
|
||||
RUN apt -y install sudo \
|
||||
&& service postgresql start
|
||||
USER postgres
|
||||
RUN service postgresql start \
|
||||
&& createuser www-data \
|
||||
&& createdb -O www-data silverstrikedb
|
||||
|
||||
#&& psql --command "CREATE USER ss WITH SUPERUSER PASSWORD 'ss';" \
|
||||
#&& psql --command "CREATE DATABASE silverstrikedb;" \
|
||||
#&& psql --command "GRANT ALL PRIVILEGES ON DATABASE silverstrikedb TO ss;"
|
||||
|
||||
USER root
|
||||
|
||||
### APP
|
||||
RUN \
|
||||
apt -y install nginx postgresql uwsgi uwsgi-plugin-python git python-pip python python-psycopg2 libpq-dev python-dev \
|
||||
&& pip install venv \
|
||||
&& mkdir -p /srv/webapps \
|
||||
&& cd /srv/webapps \
|
||||
&& git clone https://github.com/agstrike/production-project silverstrike \
|
||||
&& cd silverstrike \
|
||||
&& python -m venv env \
|
||||
&& . env/bin/activate \
|
||||
&& pip3 install silverstrike psycopg2 django
|
||||
COPY settings.py /srv/webapps/silverstrike/
|
||||
RUN \
|
||||
cd /srv/webapps/silverstrike \
|
||||
&& service postgresql start \
|
||||
&& python manage.py migrate \
|
||||
&& python manage.py collectstatic \
|
||||
&& ln -s /srv/webapps/silverstrike/uwsgi.ini /etc/uwsgi/apps-enabled/silverstrike.ini \
|
||||
&& service uwsgi start
|
||||
|
||||
### CRON BACKUPS
|
||||
RUN true \
|
||||
&& echo 'b=$(date +%Y%m%d%H%M%S) && mkdir -p /mnt/save/$b && pg_dump $DATABASE_URL --clean > /mnt/save/$b/pg.dump' > /backup.sh \
|
||||
&& echo 'b=$(find /mnt/save -type f | sort | tail -n 1); if [ -n "$b" ]; then echo restoring $b; psql $DATABASE_URL < "$b"; fi && service postgresql start;' > /restore.sh \
|
||||
&& echo '0 4,8,12,16,20 * * * bash /backup.sh >> /var/log/cronj.log 2>&1' > /etc/cron.d/backups \
|
||||
&& echo '' >> /etc/cron.d/backups \
|
||||
&& chmod 0644 /etc/cron.d/backups \
|
||||
&& touch /var/log/cronj.log
|
||||
|
||||
### FINAL
|
||||
ENV DATABASE_URL=postgres://www-data:password@localhost/silverstrikedb?sslmode=disable
|
||||
ENV SECRET_KEY=AimmBfzjdWcVN3rQs8YawbUowv5R8Eex
|
||||
ENV ALLOWED_HOSTS=*
|
||||
ENTRYPOINT \
|
||||
until psql $DATABASE_URL < /dev/null; do sleep 5; done \
|
||||
&& bash /restore.sh \
|
||||
&& sleep 5 && python manage.py migrate && exec uwsgi
|
||||
178
silverstrike/scratch/settings.py
Executable file
178
silverstrike/scratch/settings.py
Executable file
@@ -0,0 +1,178 @@
|
||||
"""
|
||||
Django settings for SilverStrike.
|
||||
|
||||
Generated by 'django-admin startproject' using Django 1.10.3.
|
||||
|
||||
For more information on this file, see
|
||||
https://docs.djangoproject.com/en/1.10/topics/settings/
|
||||
|
||||
For the full list of settings and their values, see
|
||||
https://docs.djangoproject.com/en/1.10/ref/settings/
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
|
||||
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
|
||||
# Quick-start development settings - unsuitable for production
|
||||
# See https://docs.djangoproject.com/en/1.10/howto/deployment/checklist/
|
||||
|
||||
# SECURITY WARNING: keep the secret key used in production secret!
|
||||
SECRET_KEY = 'AimmBfzjdWcVN3rQs8YawbUowv5R8Eex'
|
||||
|
||||
# SECURITY WARNING: don't run with debug turned on in production!
|
||||
DEBUG = True
|
||||
|
||||
ALLOWED_HOSTS = [
|
||||
"192.168.0.86",
|
||||
"firefly2.scratch.com",
|
||||
"silverstrike.scratch.com",
|
||||
]
|
||||
|
||||
SITE_ID = 1
|
||||
|
||||
# Application definition
|
||||
|
||||
INSTALLED_APPS = [
|
||||
'django.contrib.admin',
|
||||
'django.contrib.auth',
|
||||
'django.contrib.contenttypes',
|
||||
'django.contrib.humanize',
|
||||
'django.contrib.sessions',
|
||||
'django.contrib.messages',
|
||||
'django.contrib.staticfiles',
|
||||
'django.contrib.sites',
|
||||
'widget_tweaks',
|
||||
'silverstrike',
|
||||
'allauth',
|
||||
'allauth.account',
|
||||
'allauth.socialaccount',
|
||||
'rest_framework',
|
||||
'rest_framework.authtoken',
|
||||
]
|
||||
|
||||
MIDDLEWARE = [
|
||||
'django.middleware.security.SecurityMiddleware',
|
||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||
'django.middleware.locale.LocaleMiddleware',
|
||||
'django.middleware.common.CommonMiddleware',
|
||||
'django.middleware.csrf.CsrfViewMiddleware',
|
||||
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||
'django.contrib.messages.middleware.MessageMiddleware',
|
||||
'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
||||
]
|
||||
|
||||
ROOT_URLCONF = 'urls'
|
||||
|
||||
TEMPLATES = [
|
||||
{
|
||||
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
||||
'DIRS': [],
|
||||
'APP_DIRS': True,
|
||||
'OPTIONS': {
|
||||
'context_processors': [
|
||||
'django.template.context_processors.debug',
|
||||
'django.template.context_processors.request',
|
||||
'django.contrib.auth.context_processors.auth',
|
||||
'django.contrib.messages.context_processors.messages',
|
||||
],
|
||||
},
|
||||
},
|
||||
]
|
||||
|
||||
WSGI_APPLICATION = 'wsgi.application'
|
||||
|
||||
|
||||
# Database
|
||||
# https://docs.djangoproject.com/en/1.10/ref/settings/#databases
|
||||
|
||||
DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.sqlite3',
|
||||
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
|
||||
}
|
||||
#'default': {
|
||||
# 'ENGINE': 'django.db.backends.postgresql_psycopg2',
|
||||
# 'NAME': 'silverstrikedb',
|
||||
# 'USER': 'www-data',
|
||||
# 'PASSWORD': 'password',
|
||||
#}
|
||||
#'default': {
|
||||
# 'ENGINE': 'django.db.backends.mysql',
|
||||
# 'NAME': 'silverstrikedb',
|
||||
# 'USER': 'silverstrike',
|
||||
# 'PASSWORD': 'password',
|
||||
#}
|
||||
}
|
||||
|
||||
|
||||
# Password validation
|
||||
# https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators
|
||||
|
||||
AUTH_PASSWORD_VALIDATORS = [
|
||||
{
|
||||
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
|
||||
},
|
||||
{
|
||||
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
|
||||
},
|
||||
{
|
||||
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
|
||||
},
|
||||
{
|
||||
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
|
||||
},
|
||||
]
|
||||
|
||||
AUTHENTICATION_BACKENDS = (
|
||||
'django.contrib.auth.backends.ModelBackend',
|
||||
'allauth.account.auth_backends.AuthenticationBackend',
|
||||
)
|
||||
|
||||
|
||||
# Internationalization
|
||||
# https://docs.djangoproject.com/en/1.10/topics/i18n/
|
||||
|
||||
LANGUAGE_CODE = 'en-us'
|
||||
|
||||
TIME_ZONE = 'UTC'
|
||||
|
||||
USE_I18N = True
|
||||
|
||||
USE_L10N = True
|
||||
|
||||
USE_TZ = True
|
||||
|
||||
|
||||
# Static files (CSS, JavaScript, Images)
|
||||
# https://docs.djangoproject.com/en/1.10/howto/static-files/
|
||||
|
||||
STATIC_URL = '/static/'
|
||||
STATIC_ROOT = os.path.join(BASE_DIR, 'public', 'static')
|
||||
|
||||
|
||||
LOGIN_REDIRECT_URL = 'index'
|
||||
LOGIN_URL = 'account_login'
|
||||
LOGOUT_URL = 'account_logout'
|
||||
ACCOUNT_LOGOUT_REDIRECT_URL = 'account_login'
|
||||
|
||||
ACCOUNT_ADAPTER = 'signupadapter.SignupDisabledAdapter'
|
||||
|
||||
LOGGING = {
|
||||
'version': 1,
|
||||
'filters': {
|
||||
'require_debug_true': {
|
||||
'()': 'django.utils.log.RequireDebugTrue',
|
||||
}
|
||||
},
|
||||
'handlers': {
|
||||
'console': {
|
||||
'level': 'DEBUG',
|
||||
'filters': ['require_debug_true'],
|
||||
'class': 'logging.StreamHandler',
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
1
silverstrike/scratch/try
Executable file
1
silverstrike/scratch/try
Executable file
@@ -0,0 +1 @@
|
||||
docker build -t bel/silverstrike:v0.0 -f Dockerfile . && docker run --rm -it --name ss -p 51131:8000 --entrypoint bash bel/silverstrike:v0.0
|
||||
Reference in New Issue
Block a user