first commit

This commit is contained in:
Hugo Willaume 2022-02-17 17:59:43 +01:00
commit 05c1a74e9c
30 changed files with 560 additions and 0 deletions

13
.gitignore vendored Normal file
View 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

View 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&

View 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

View File

@ -0,0 +1 @@
place folder adminscripts next to all other services folders

7
adminscripts/reset.sh Executable file
View 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
View 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
View 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
View 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
View 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

View 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

View File

@ -0,0 +1,4 @@
POSTGRES_USER=gitea
POSTGRES_PASSWORD=gitea
POSTGRES_DB=gitea

6
notes/backup.sh Executable file
View 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
View 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

View 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
View 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

View 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
View File

@ -0,0 +1,2 @@
USER_NAME=youpi
USER_PWDHASH=https://doc.traefik.io/traefik/middlewares/http/basicauth/

View 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
View 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
View 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
View 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)

View 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

View 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); }
}

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

View 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

View File

@ -0,0 +1,2 @@
User-agent: *
Disallow:

View 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
View 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