first commit
This commit is contained in:
commit
05c1a74e9c
13
.gitignore
vendored
Normal file
13
.gitignore
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
/adminscripts/Syrupy/*.log
|
||||
/adminscripts/Syrupy/*.raw
|
||||
/ftp/conf-*
|
||||
/ftp/home-*
|
||||
/gitea/gitea_data
|
||||
/gitea/postgres
|
||||
/notes/standardfile.db
|
||||
/notes/standardfile.yml
|
||||
/recipes/mealie
|
||||
/traefik/letsencrypt
|
||||
/traefik/.env
|
||||
/wizz/app/venv
|
||||
*.secret
|
8
adminscripts/Syrupy/syrup_help.txt
Normal file
8
adminscripts/Syrupy/syrup_help.txt
Normal file
@ -0,0 +1,8 @@
|
||||
-i : polling interval in seconds
|
||||
-m : poll the most memory intensive processes
|
||||
-S : to standard output
|
||||
|
||||
https://github.com/jeetsukumaran/Syrupy
|
||||
|
||||
ps -1 syrupy | grep syrup;
|
||||
syrupy -m 5 -i 30&
|
11
adminscripts/backup_to_gdrive.sh
Executable file
11
adminscripts/backup_to_gdrive.sh
Executable file
@ -0,0 +1,11 @@
|
||||
SCRIPT_DIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)
|
||||
GLOB_DIR=$SCRIPT_DIR/..
|
||||
|
||||
|
||||
SERVICES=( gitea notes recipes )
|
||||
|
||||
for service in "${SERVICES[@]}"
|
||||
do
|
||||
cd $GLOB_DIR/$service; ./backup.sh;
|
||||
done
|
||||
|
1
adminscripts/instructions.txt
Normal file
1
adminscripts/instructions.txt
Normal file
@ -0,0 +1 @@
|
||||
place folder adminscripts next to all other services folders
|
7
adminscripts/reset.sh
Executable file
7
adminscripts/reset.sh
Executable file
@ -0,0 +1,7 @@
|
||||
docker kill $(docker ps -q);
|
||||
if [[ $1 == "hard" ]]
|
||||
then
|
||||
docker system prune -f -a --volumes;
|
||||
else
|
||||
docker system prune -f --volumes;
|
||||
fi
|
9
adminscripts/run_all.sh
Executable file
9
adminscripts/run_all.sh
Executable file
@ -0,0 +1,9 @@
|
||||
SCRIPT_DIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)
|
||||
GLOB_DIR=$SCRIPT_DIR/..
|
||||
|
||||
SERVICES=( traefik gitea wizz ftp notes recipes )
|
||||
|
||||
for service in "${SERVICES[@]}"
|
||||
do
|
||||
cd $GLOB_DIR/$service; docker-compose down; docker-compose up -d --build;
|
||||
done
|
27
ftp/docker-compose.yml
Normal file
27
ftp/docker-compose.yml
Normal file
@ -0,0 +1,27 @@
|
||||
version: '3.5'
|
||||
|
||||
services:
|
||||
ftp:
|
||||
container_name: ftp
|
||||
image: drakkan/sftpgo:v2.1.2-alpine-slim
|
||||
networks:
|
||||
- traefik_default
|
||||
volumes:
|
||||
- ./home-sftpgo:/srv/sftpgo/data
|
||||
- ./conf-sftpgo:/var/lib/sftpgo
|
||||
environment:
|
||||
- SFTPGO_WEBDAVD__BINDINGS__0__PORT=10080
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.tcp.routers.ftp.rule=HostSNI(`*`)"
|
||||
- "traefik.tcp.routers.ftp.entrypoints=sftp" #2222
|
||||
- "traefik.tcp.services.ftp.loadbalancer.server.port=2022"
|
||||
|
||||
- "traefik.http.routers.uiftp.rule=Host(`ftp.hugowillaume.com`)"
|
||||
- "traefik.http.routers.uiftp.entrypoints=websecure"
|
||||
- "traefik.http.routers.uiftp.tls.certresolver=myhttpchallenge"
|
||||
- "traefik.http.services.uiftp.loadbalancer.server.port=8080"
|
||||
|
||||
networks:
|
||||
traefik_default:
|
||||
external: true
|
10
gitea/backup.sh
Executable file
10
gitea/backup.sh
Executable file
@ -0,0 +1,10 @@
|
||||
SCRIPT_DIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)
|
||||
|
||||
docker exec -u git -w "/data/git" $(docker ps -qf "name=^/gitea$") bash -c "/app/gitea/gitea dump -c /data/gitea/conf/app.ini";
|
||||
cd $SCRIPT_DIR;
|
||||
mv gitea_data/git/gitea-dump* gitea_backup.zip;
|
||||
rclone copy gitea_backup.zip Gdrive:backups/;
|
||||
rm -f gitea_backup.zip;
|
||||
|
||||
|
||||
|
38
gitea/docker-compose.yml
Normal file
38
gitea/docker-compose.yml
Normal file
@ -0,0 +1,38 @@
|
||||
version: "3.5"
|
||||
|
||||
networks:
|
||||
gitea:
|
||||
external: false
|
||||
|
||||
traefik_default:
|
||||
external: true
|
||||
|
||||
services:
|
||||
gitea:
|
||||
container_name: gitea
|
||||
image: gitea/gitea:1.15.5
|
||||
restart: always
|
||||
env_file: ./secrets/gitea.secret
|
||||
networks:
|
||||
- gitea
|
||||
- traefik_default
|
||||
volumes:
|
||||
- ./gitea_data:/data
|
||||
depends_on:
|
||||
- db
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.gitea.rule=Host(`git.hugowillaume.com`)"
|
||||
- "traefik.http.routers.gitea.entrypoints=websecure"
|
||||
- "traefik.http.routers.gitea.tls.certresolver=myhttpchallenge"
|
||||
- "traefik.http.services.gitea.loadbalancer.server.port=3000"
|
||||
|
||||
db:
|
||||
container_name: gitea_db
|
||||
image: postgres:9.6
|
||||
restart: always
|
||||
env_file: ./secrets/gitea_db.secret
|
||||
networks:
|
||||
- gitea
|
||||
volumes:
|
||||
- ./postgres:/var/lib/postgresql/data
|
5
gitea/secrets/gitea.secretsample
Normal file
5
gitea/secrets/gitea.secretsample
Normal file
@ -0,0 +1,5 @@
|
||||
GITEA__database__DB_TYPE=postgres
|
||||
GITEA__database__HOST=db:5432
|
||||
GITEA__database__NAME=gitea
|
||||
GITEA__database__USER=gitea
|
||||
GITEA__database__PASSWD=gitea
|
4
gitea/secrets/gitea_db.secretsample
Normal file
4
gitea/secrets/gitea_db.secretsample
Normal file
@ -0,0 +1,4 @@
|
||||
POSTGRES_USER=gitea
|
||||
POSTGRES_PASSWORD=gitea
|
||||
POSTGRES_DB=gitea
|
||||
|
6
notes/backup.sh
Executable file
6
notes/backup.sh
Executable file
@ -0,0 +1,6 @@
|
||||
SCRIPT_DIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)
|
||||
|
||||
cd $SCRIPT_DIR;
|
||||
rclone copy standardfile.db Gdrive:backups/;
|
||||
|
||||
|
35
notes/docker-compose.yml
Normal file
35
notes/docker-compose.yml
Normal file
@ -0,0 +1,35 @@
|
||||
version: '3.5'
|
||||
|
||||
services:
|
||||
notesgo:
|
||||
container_name: notesgo
|
||||
image: mdouchement/standardfile:0.6.8
|
||||
networks:
|
||||
- traefik_default
|
||||
volumes:
|
||||
- ./standardfile.yml:/etc/standardfile/standardfile.yml
|
||||
- ./standardfile.db:/etc/standardfile/standardfile.db
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.notesgo.rule=Host(`notes.hugowillaume.com`)"
|
||||
- "traefik.http.routers.notesgo.entrypoints=websecure"
|
||||
- "traefik.http.routers.notesgo.tls.certresolver=myhttpchallenge"
|
||||
- "traefik.http.services.notesgo.loadbalancer.server.port=5000"
|
||||
|
||||
notes-extensions:
|
||||
container_name: notes-extensions
|
||||
image: halverneus/static-file-server:v1.8.4
|
||||
networks:
|
||||
- traefik_default
|
||||
volumes:
|
||||
- ./standardnotes-extensions/public:/web
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.notes-ext.rule=Host(`notes-extensions.hugowillaume.com`) || (Host(`notes.hugowillaume.com`) && PathPrefix(`/extensions`))"
|
||||
- "traefik.http.routers.notes-ext.entrypoints=websecure"
|
||||
- "traefik.http.routers.notes-ext.tls.certresolver=myhttpchallenge"
|
||||
- "traefik.http.services.notes-ext.loadbalancer.server.port=8080"
|
||||
|
||||
networks:
|
||||
traefik_default:
|
||||
external: true
|
15
notes/sample-standardfile.yml
Normal file
15
notes/sample-standardfile.yml
Normal file
@ -0,0 +1,15 @@
|
||||
# Address to bind
|
||||
address: "0.0.0.0:5000"
|
||||
# Disable registration
|
||||
no_registration: false
|
||||
# Database folder path; empty value means current directory
|
||||
database_path: "/etc/standardfile"
|
||||
# Secret key used for JWT authenthentication (before 004 and 20200115)
|
||||
secret_key: ¯\_(ツ)_/¯
|
||||
# Session used for authentication (since 004 and 20200115)
|
||||
session:
|
||||
secret: ¯\_(ツ)_/¯
|
||||
access_token_ttl: 1440h # 60 days expressed in Golang's time.Duration format
|
||||
refresh_token_ttl: 8760h # 1 year
|
||||
|
||||
|
8
recipes/backup.sh
Executable file
8
recipes/backup.sh
Executable file
@ -0,0 +1,8 @@
|
||||
SCRIPT_DIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)
|
||||
|
||||
cd $SCRIPT_DIR;
|
||||
zip -r -9 mealie.zip mealie;
|
||||
rclone copy mealie.zip Gdrive:backups/;
|
||||
rm mealie.zip
|
||||
|
||||
|
30
recipes/docker-compose.yml
Normal file
30
recipes/docker-compose.yml
Normal file
@ -0,0 +1,30 @@
|
||||
version: "3"
|
||||
services:
|
||||
mealie:
|
||||
container_name: mealie
|
||||
restart: always
|
||||
image: hkotel/mealie:v0.5.3
|
||||
environment:
|
||||
PUID: 1000
|
||||
PGID: 1000
|
||||
TZ: Europe/Paris
|
||||
RECIPE_PUBLIC: 'true'
|
||||
RECIPE_SHOW_NUTRITION: 'true'
|
||||
RECIPE_SHOW_ASSETS: 'true'
|
||||
RECIPE_LANDSCAPE_VIEW: 'false'
|
||||
RECIPE_DISABLE_COMMENTS: 'true'
|
||||
RECIPE_DISABLE_AMOUNT: 'false'
|
||||
volumes:
|
||||
- ./mealie/data:/app/data
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.recipes.rule=Host(`recipes.hugowillaume.com`)"
|
||||
- "traefik.http.routers.recipes.entrypoints=websecure"
|
||||
- "traefik.http.routers.recipes.tls.certresolver=myhttpchallenge"
|
||||
- "traefik.http.services.recipes.loadbalancer.server.port=80"
|
||||
networks:
|
||||
- traefik_default
|
||||
|
||||
networks:
|
||||
traefik_default:
|
||||
external: true
|
2
traefik/.env.sample
Normal file
2
traefik/.env.sample
Normal file
@ -0,0 +1,2 @@
|
||||
USER_NAME=youpi
|
||||
USER_PWDHASH=https://doc.traefik.io/traefik/middlewares/http/basicauth/
|
30
traefik/docker-compose.yml
Normal file
30
traefik/docker-compose.yml
Normal file
@ -0,0 +1,30 @@
|
||||
version: "3.3"
|
||||
|
||||
networks:
|
||||
default:
|
||||
external: false
|
||||
|
||||
services:
|
||||
traefik:
|
||||
image: "traefik:v2.5.3"
|
||||
container_name: "traefik"
|
||||
networks:
|
||||
- default
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
- "2222:2222"
|
||||
volumes:
|
||||
- "/var/run/docker.sock:/var/run/docker.sock:ro"
|
||||
- "./letsencrypt:/letsencrypt"
|
||||
- "./traefik.toml:/etc/traefik/traefik.toml"
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.traefik.rule=Host(`rproxy.hugowillaume.com`) && (PathPrefix(`/api`) || PathPrefix(`/dashboard`))"
|
||||
- "traefik.http.routers.traefik.service=api@internal"
|
||||
- "traefik.http.routers.traefik.entrypoints=web"
|
||||
- "traefik.http.middlewares.admin.basicauth.users=${USER_NAME}:${USER_PWDHASH}"
|
||||
- "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
|
||||
- "traefik.http.routers.redirs.rule=hostregexp(`{host:.+}`)"
|
||||
- "traefik.http.routers.redirs.entrypoints=web"
|
||||
- "traefik.http.routers.redirs.middlewares=redirect-to-https"
|
32
traefik/traefik.toml
Normal file
32
traefik/traefik.toml
Normal file
@ -0,0 +1,32 @@
|
||||
[entryPoints]
|
||||
[entryPoints.web]
|
||||
address = ":80"
|
||||
|
||||
[entryPoints.websecure]
|
||||
address = ":443"
|
||||
|
||||
[entryPoints.sftp]
|
||||
address = ":2222"
|
||||
|
||||
#[providers.file]
|
||||
# directory = "/etc/traefik/config"
|
||||
|
||||
[providers.docker]
|
||||
exposedByDefault = false
|
||||
network = "traefik_default"
|
||||
|
||||
[certificatesResolvers.myhttpchallenge.acme]
|
||||
email = "mr.hurlu@gmail.com"
|
||||
storage = "/letsencrypt/acme.json"
|
||||
[certificatesResolvers.myhttpchallenge.acme.httpChallenge]
|
||||
entryPoint = "web"
|
||||
|
||||
|
||||
[api]
|
||||
dashboard = true
|
||||
|
||||
[accessLog]
|
||||
#[tracing]
|
||||
# serviceName = "traefik-traefik"
|
||||
[log]
|
||||
level = "DEBUG"
|
6
wizz/Dockerfile
Normal file
6
wizz/Dockerfile
Normal file
@ -0,0 +1,6 @@
|
||||
FROM tiangolo/uwsgi-nginx-flask:python3.6-alpine3.7
|
||||
|
||||
COPY ./app /app
|
||||
WORKDIR /app
|
||||
|
||||
RUN pip install -r requirements.txt
|
21
wizz/app/main.py
Normal file
21
wizz/app/main.py
Normal file
@ -0,0 +1,21 @@
|
||||
from flask import Flask, render_template, request, session, send_from_directory
|
||||
from sys import argv
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
@app.route('/robots.txt')
|
||||
def static_from_root():
|
||||
return send_from_directory(app.static_folder, request.path[1:])
|
||||
|
||||
|
||||
@app.route("/")
|
||||
def hello():
|
||||
return render_template('home.html')
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
if len(argv) > 1:
|
||||
print("Teeeest")
|
||||
app.run(host='0.0.0.0', port=int(argv[1]))
|
||||
else:
|
||||
app.run(host='0.0.0.0', debug=True, port=9999)
|
9
wizz/app/requirements.txt
Normal file
9
wizz/app/requirements.txt
Normal file
@ -0,0 +1,9 @@
|
||||
Babel==2.6.0
|
||||
Click==7.0
|
||||
Flask==1.0.2
|
||||
Flask-Babel==0.12.2
|
||||
itsdangerous==1.1.0
|
||||
Jinja2==2.10
|
||||
MarkupSafe==1.1.0
|
||||
pytz==2018.9
|
||||
Werkzeug==0.14.1
|
36
wizz/app/static/css/home.css
Normal file
36
wizz/app/static/css/home.css
Normal file
@ -0,0 +1,36 @@
|
||||
body {
|
||||
display: flex;
|
||||
min-height: 100vh;
|
||||
flex-direction: column;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
main {
|
||||
flex: 1 0 auto;
|
||||
font-family: 'Montserrat', sans-serif;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
img {
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
.shook {
|
||||
animation: shake 0.5s;
|
||||
}
|
||||
|
||||
|
||||
@keyframes shake {
|
||||
0% { transform: translate(1px, 1px) rotate(0deg); }
|
||||
10% { transform: translate(-1px, -2px) rotate(-1deg); }
|
||||
20% { transform: translate(-3px, 0px) rotate(1deg); }
|
||||
30% { transform: translate(3px, 2px) rotate(0deg); }
|
||||
40% { transform: translate(1px, -1px) rotate(1deg); }
|
||||
50% { transform: translate(-1px, 2px) rotate(-1deg); }
|
||||
60% { transform: translate(-3px, 1px) rotate(0deg); }
|
||||
70% { transform: translate(3px, 1px) rotate(-1deg); }
|
||||
80% { transform: translate(-1px, -1px) rotate(1deg); }
|
||||
90% { transform: translate(1px, 2px) rotate(0deg); }
|
||||
100% { transform: translate(1px, -2px) rotate(-1deg); }
|
||||
}
|
BIN
wizz/app/static/files/wizz.mp3
Normal file
BIN
wizz/app/static/files/wizz.mp3
Normal file
Binary file not shown.
BIN
wizz/app/static/imgs/favicon.png
Normal file
BIN
wizz/app/static/imgs/favicon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.8 KiB |
BIN
wizz/app/static/imgs/msn.png
Normal file
BIN
wizz/app/static/imgs/msn.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 86 KiB |
123
wizz/app/static/imgs/msn.svg
Normal file
123
wizz/app/static/imgs/msn.svg
Normal file
@ -0,0 +1,123 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="300px"
|
||||
height="115px" viewBox="0 0 300 115" enable-background="new 0 0 300 115" xml:space="preserve">
|
||||
<g id="Layer_1">
|
||||
<g>
|
||||
<g>
|
||||
<g>
|
||||
<path fill="#005CA6" d="M30.917,104.354H9.631l9.76-58.017h19.757l-1.529,9.001c1.828-2.9,3.504-4.805,5.352-6.235
|
||||
c3.94-3.051,8.408-4.461,13.112-4.461c7.41,0,11.975,3.654,14.117,10.604c4.231-7.291,10.309-10.604,18.185-10.604
|
||||
c10.226,0,15.837,6.112,16.051,16.048c0.042,1.883-0.153,3.895-0.469,5.884l-6.375,37.78H75.72l5.787-34.406
|
||||
c0.336-1.986,0.435-3.064,0.352-4.239c-0.228-3.28-1.752-4.899-4.694-4.899c-2.235,0-4.293,1.024-5.675,3.293
|
||||
c-1.039,1.712-1.205,2.684-1.908,6.947l-5.617,33.305H42.671l5.812-34.406c0.334-1.986,0.383-3.064,0.302-4.239
|
||||
c-0.231-3.28-1.901-4.899-4.842-4.899c-2.236,0-4.124,1.024-5.503,3.293c-1.041,1.712-1.206,2.684-1.908,6.947L30.917,104.354z"
|
||||
/>
|
||||
<path fill="#005CA6" d="M190.292,46.337l-1.516,9.001c1.435-2.597,3.314-4.956,5.682-6.672
|
||||
c3.695-2.684,8.351-4.024,13.291-4.024c9.762,0,15.693,6.243,16.069,14.906c0.081,1.881,0.051,4.219-0.483,7.277l-6.293,37.528
|
||||
h-22.019l5.698-33.882c0.401-2.411,0.586-3.653,0.586-4.595c0-3.062-1.769-5.097-5.178-5.097c-4.589,0-7.426,2.989-8.478,9.304
|
||||
l-5.775,34.27h-21.578l9.759-58.017H190.292z"/>
|
||||
<path fill="#005CA6" d="M145.806,63.462c-1.511-3.583-3.948-6.116-9.485-6.355c-4.771-0.203-7.979,1.193-7.979,3.649
|
||||
c0,3.084,2.434,3.763,10.195,5.319c6.492,1.304,10.926,2.763,14.523,4.915c6.081,3.638,8.453,8.934,8.085,15.485
|
||||
c-0.814,14.541-15.88,20.307-29.637,20.307c-14.126,0-24.542-4.62-29.033-17.274l17.624-3.9
|
||||
c2.151,4.892,5.596,7.234,11.65,7.383c4.852,0.12,8.336-1.341,8.336-3.911c0-2.979-3.023-3.717-10.812-5.581
|
||||
c-11.146-2.662-21.998-6.885-21.77-18.706c0.313-16.161,15.904-21.364,30.289-20.885c10.604,0.354,21.139,4.795,25.031,15.786
|
||||
L145.806,63.462z"/>
|
||||
</g>
|
||||
<path fill="#005CA6" d="M227.754,98.668h0.686c0.604,0,0.79,0.208,0.79,0.479c0,0.562-0.54,0.644-0.873,0.644h-0.603V98.668z
|
||||
M227.754,100.725h0.728l0.728,1.662h1.287l-0.851-1.995c0.229-0.103,0.851-0.353,0.851-1.225c0-1.37-1.475-1.37-1.744-1.37
|
||||
h-2.221v4.59h1.223V100.725z M224.018,100.102c0,2.472,1.91,4.403,4.401,4.403c2.492,0,4.403-1.932,4.403-4.403
|
||||
c0-2.533-1.952-4.424-4.403-4.424C225.948,95.678,224.018,97.568,224.018,100.102z M225.034,100.102
|
||||
c0-1.849,1.6-3.406,3.385-3.406c1.808,0,3.386,1.558,3.386,3.406c0,1.806-1.578,3.385-3.386,3.385
|
||||
C226.613,103.486,225.034,101.907,225.034,100.102z"/>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
|
||||
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="236.5762" y1="169.8906" x2="252.4729" y2="141.1055" gradientTransform="matrix(1 0 0 1 -21 -121.5)">
|
||||
<stop offset="0" style="stop-color:#FFFFFF"/>
|
||||
<stop offset="0.0056" style="stop-color:#94CBEE"/>
|
||||
<stop offset="0.2111" style="stop-color:#76B7E5"/>
|
||||
<stop offset="0.6556" style="stop-color:#008ECF"/>
|
||||
<stop offset="0.8539" style="stop-color:#007FC5"/>
|
||||
</linearGradient>
|
||||
<path fill="url(#SVGID_1_)" d="M246.235,35.751c-0.233-1.233-0.429-2.459-0.587-3.661c-8.091-7.538-19.813-13.804-28.996-16.517
|
||||
c-2.645-0.78-5.909-1.285-7.639,0.642c-1.397,1.557-0.975,4.494,0.6,8.081c5.427,12.372,15.466,25.525,25.344,33.211
|
||||
c0-0.002,0-0.003,0-0.003C232.79,47.249,236.499,38.274,246.235,35.751z"/>
|
||||
|
||||
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="254.3887" y1="160.9219" x2="274.7715" y2="181.3047" gradientTransform="matrix(1 0 0 1 -21 -121.5)">
|
||||
<stop offset="0" style="stop-color:#007FC5"/>
|
||||
<stop offset="0.0873" style="stop-color:#0088B2"/>
|
||||
<stop offset="0.2517" style="stop-color:#00968D"/>
|
||||
<stop offset="0.3859" style="stop-color:#009F6C"/>
|
||||
<stop offset="0.4832" style="stop-color:#00A555"/>
|
||||
<stop offset="0.5337" style="stop-color:#00A94F"/>
|
||||
</linearGradient>
|
||||
<path fill="url(#SVGID_2_)" d="M253.156,55.715c-3.012-5.187-5.569-12.761-6.921-19.964
|
||||
c-9.736,2.523-13.445,11.498-11.278,21.753c0,0,0,0.001,0,0.003c0.003,0.006,0.003,0.003,0.002,0
|
||||
c1.292,1.006,2.733,1.988,3.864,2.576c5.238,2.723,8.701,2.186,11.688,0.499c1.192-0.676,2.703-2.399,3.468-3.502
|
||||
C253.696,56.629,253.422,56.174,253.156,55.715z"/>
|
||||
|
||||
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="280.2539" y1="201.6445" x2="261.9498" y2="173.4587" gradientTransform="matrix(1 0 0 1 -21 -121.5)">
|
||||
<stop offset="0.0955" style="stop-color:#00A94F"/>
|
||||
<stop offset="0.2436" style="stop-color:#00B156"/>
|
||||
<stop offset="0.4855" style="stop-color:#61BD65"/>
|
||||
<stop offset="0.7009" style="stop-color:#86C772"/>
|
||||
<stop offset="0.8798" style="stop-color:#9ACE7B"/>
|
||||
<stop offset="1" style="stop-color:#A1D07E"/>
|
||||
</linearGradient>
|
||||
<path fill="url(#SVGID_3_)" d="M250.511,60.582c-2.986,1.687-6.449,2.224-11.688-0.499c-1.131-0.588-2.572-1.57-3.864-2.576
|
||||
c0,0.003,0.001,0.005,0,0.002c3.996,10.235,10.033,17.533,18.036,21.864c1.431,0.773,2.768,0.978,4.177,0.305
|
||||
c0.942-0.449,1.471-1.501,1.731-2.117c1.263-2.99,1.864-6.584,2.155-11.471c-2.702-2.763-5.078-5.797-7.08-9.01
|
||||
C253.214,58.183,251.703,59.906,250.511,60.582z"/>
|
||||
|
||||
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="299.1016" y1="198.2129" x2="295.4453" y2="165.6161" gradientTransform="matrix(1 0 0 1 -21 -121.5)">
|
||||
<stop offset="0" style="stop-color:#F4A656"/>
|
||||
<stop offset="0.4719" style="stop-color:#FCCA25"/>
|
||||
<stop offset="0.4944" style="stop-color:#FCCA25"/>
|
||||
</linearGradient>
|
||||
<path fill="url(#SVGID_4_)" d="M290.086,43.759c-0.814,2.26-1.568,3.901-3.148,6.544c-2.378,3.978-6.64,6.347-11.544,6.886
|
||||
c-4.461,0.489-10.494-0.339-15.355-2.243c0.746,3.589,1.105,7.321,1.021,11.145c3.464,3.398,7.521,6.388,12.081,8.662
|
||||
c0.794,0.396,1.795,0.669,2.665,0.669c1.351,0,2.628-0.512,3.769-1.424C287.681,67.517,292.757,55.912,290.086,43.759z"/>
|
||||
|
||||
<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="273.0928" y1="165.3398" x2="311.6514" y2="165.3398" gradientTransform="matrix(1 0 0 1 -21.5659 -121.0361)">
|
||||
<stop offset="0.2921" style="stop-color:#F4A656"/>
|
||||
<stop offset="1" style="stop-color:#E95A2F"/>
|
||||
</linearGradient>
|
||||
<path fill="url(#SVGID_5_)" d="M251.527,33.93c3.61,6.164,6.591,13.283,8.02,18.891c0.179,0.702,0.344,1.411,0.491,2.125
|
||||
c4.861,1.904,10.895,2.732,15.355,2.243c4.904-0.539,9.166-2.908,11.544-6.886c1.58-2.643,2.334-4.284,3.148-6.544
|
||||
C282.312,29.362,262.418,29.475,251.527,33.93z"/>
|
||||
|
||||
<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="271.2686" y1="143.9473" x2="315.6193" y2="143.9473" gradientTransform="matrix(1 0 0 1 -21.5659 -121.0361)">
|
||||
<stop offset="0.0169" style="stop-color:#F4A656"/>
|
||||
<stop offset="0.5393" style="stop-color:#E95A2F"/>
|
||||
</linearGradient>
|
||||
<path fill="url(#SVGID_6_)" d="M291.098,7.777c-0.778-1.644-2.112-3.527-3.626-4.447c-2.935-1.781-6.637-1.628-10.271,0.106
|
||||
c-11.61,5.538-23.772,15.465-27.497,27.548c0.621,0.949,1.23,1.934,1.824,2.945c10.891-4.455,30.784-4.568,38.559,9.829
|
||||
C293.861,33.279,296.553,19.308,291.098,7.777z"/>
|
||||
|
||||
<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="273.3965" y1="328.332" x2="262.5037" y2="332.733" gradientTransform="matrix(1 0 0 1 -14.3418 -282.9668)">
|
||||
<stop offset="0.0449" style="stop-color:#3E5BA6"/>
|
||||
<stop offset="0.4719" style="stop-color:#6D7CBC"/>
|
||||
<stop offset="0.532" style="stop-color:#6373B6"/>
|
||||
<stop offset="0.6585" style="stop-color:#4F66AD"/>
|
||||
<stop offset="0.7748" style="stop-color:#435EA7"/>
|
||||
<stop offset="0.8708" style="stop-color:#3E5BA6"/>
|
||||
<stop offset="1" style="stop-color:#3E5BA6"/>
|
||||
</linearGradient>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" fill="url(#SVGID_7_)" d="M245.589,31.621c-0.155-1.278,0.161-2.434,1.006-2.757
|
||||
c0.802-0.309,1.811,0.206,2.495,1.202c4.696,6.841,8.719,15.925,10.457,22.754c1.077,4.232,1.612,8.684,1.512,13.27
|
||||
c-3.081-3.152-5.74-6.655-7.902-10.375C249.562,49.521,246.611,39.924,245.589,31.621z"/>
|
||||
</g>
|
||||
<path fill="#1B5BA1" d="M285.125,77.903h0.689c0.6,0,0.787,0.209,0.787,0.485c0,0.568-0.538,0.655-0.877,0.655h-0.6V77.903z
|
||||
M285.125,79.989h0.728l0.725,1.685h1.285l-0.845-2.02c0.231-0.1,0.845-0.363,0.845-1.247c0-1.386-1.466-1.386-1.739-1.386
|
||||
h-2.219v4.652h1.221V79.989z M281.393,79.358c0,2.497,1.909,4.463,4.401,4.463c2.485,0,4.394-1.966,4.394-4.463
|
||||
c0-2.571-1.951-4.487-4.394-4.487C283.318,74.871,281.393,76.787,281.393,79.358z M282.409,79.358c0-1.877,1.6-3.446,3.385-3.446
|
||||
c1.808,0,3.377,1.569,3.377,3.446c0,1.837-1.569,3.431-3.377,3.431C283.984,82.789,282.409,81.195,282.409,79.358z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Layer_2">
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 8.9 KiB |
2
wizz/app/static/robots.txt
Normal file
2
wizz/app/static/robots.txt
Normal file
@ -0,0 +1,2 @@
|
||||
User-agent: *
|
||||
Disallow:
|
52
wizz/app/templates/home.html
Normal file
52
wizz/app/templates/home.html
Normal file
@ -0,0 +1,52 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta name="description" content="WIZZZZZZZZZZZZZZZZZZZ" />
|
||||
<link type="text/css" rel="stylesheet" href="{{ url_for('static', filename='css/home.css') }}"/>
|
||||
<link rel="shortcut icon" type="image/png" href="{{ url_for('static', filename='imgs/favicon.png') }}"/>
|
||||
|
||||
<title>Get wizzed son</title>
|
||||
</head>
|
||||
|
||||
<main>
|
||||
<img id="msn" src="{{ url_for('static', filename='imgs/msn.png') }}" style="cursor: pointer;"/>
|
||||
</main>
|
||||
|
||||
<audio id="myAudio" controls autoplay style="display: none">
|
||||
<source src=" {{ url_for('static', filename='files/wizz.mp3') }} " type="audio/mpeg">
|
||||
</audio>
|
||||
|
||||
<script>
|
||||
|
||||
function sleep(ms) {
|
||||
return new Promise(resolve => setTimeout(resolve, ms));
|
||||
}
|
||||
|
||||
var button = document.getElementById("msn");
|
||||
button.addEventListener("click",function(e)
|
||||
{
|
||||
var audio = new Audio('{{ url_for('static', filename='files/wizz.mp3') }} ')
|
||||
audio.play();
|
||||
button.classList.add("shook");
|
||||
sleep(500).then(() => {
|
||||
button.classList.remove("shook");
|
||||
});
|
||||
} ,false);
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
|
||||
button.classList.add("shook");
|
||||
sleep(500).then(() => { button.classList.remove("shook") });
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
</html>
|
||||
|
||||
|
||||
</html>
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
</html>
|
20
wizz/docker-compose.yml
Normal file
20
wizz/docker-compose.yml
Normal file
@ -0,0 +1,20 @@
|
||||
version: '3.5'
|
||||
|
||||
services:
|
||||
wizz:
|
||||
build:
|
||||
context: ./
|
||||
dockerfile: ./Dockerfile
|
||||
container_name: wizz
|
||||
networks:
|
||||
- traefik_default
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.wizz.rule=Host(`wizz.hugowillaume.com`)"
|
||||
- "traefik.http.routers.wizz.entrypoints=websecure"
|
||||
- "traefik.http.routers.wizz.tls.certresolver=myhttpchallenge"
|
||||
- "traefik.http.services.wizz.loadbalancer.server.port=80"
|
||||
|
||||
networks:
|
||||
traefik_default:
|
||||
external: true
|
Loading…
x
Reference in New Issue
Block a user