add static generation script

This commit is contained in:
Tykayn 2023-06-27 13:22:03 +02:00 committed by tykayn
parent 7a57caed2c
commit 1d08b01501
9 changed files with 591 additions and 105 deletions

View File

@ -1,57 +1,81 @@
export const LXCcontainerLocalIP = '10.10.10.103'
export const LXCcontainerProtocol = 'https'
export
const domainsConfig = [{
export const listing = {
'com': {
'cipherbliss': [
'portfolio',
'www',
'framadate-api'
]
},
'fr': {
'tykayn': ['']
},
'art': {
'clairelemoine': ['www']
},
}
export let baseDomain = {
LXCcontainerLocalIP,
LXCcontainerProtocol,
name: 'le nom du domaine',
domain: '',
framework: 'static',
letsEncryptNumber: '-001',
}
export const domainsConfig = [{
LXCcontainerLocalIP,
LXCcontainerProtocol,
name: 'Blog cipherbliss',
domain: 'www.cipherbliss.com',
framework: 'wordpress',
disableSSL: false,
}, {
LXCcontainerLocalIP,
LXCcontainerProtocol,
name: 'Portfolio cipherbliss',
domain: 'portfolio.cipherbliss.com',
framework: 'symfony',
disableSSL: false,
}, {
LXCcontainerLocalIP,
LXCcontainerProtocol,
name: 'Blog tykayn - le vortex à chats',
domain: 'tykayn.fr',
framework: 'wordpress',
disableSSL: false,
redirectToNoWWW: true,
}, {
LXCcontainerLocalIP,
LXCcontainerProtocol,
name: 'Site de la compagnie la puce à l\'oreille',
domain: 'www.pucealoreille.fr',
framework: 'wordpress',
disableSSL: false,
}, {
LXCcontainerLocalIP,
LXCcontainerProtocol,
name: 'Site de Didier, un bec et des ailes',
domain: 'www.unbecetdesailes.fr',
framework: 'wordpress',
disableSSL: false,
}, {
LXCcontainerLocalIP,
LXCcontainerProtocol,
name: 'Site de Catherine Fonder, conteuse',
domain: 'www.catherinefonder.fr',
framework: 'wordpress',
disableSSL: false,
}, {
LXCcontainerLocalIP,
LXCcontainerProtocol,
name: 'Site de la Fromagerie BSF',
domain: 'www.lafromagerie-bsf.com',
framework: 'wordpress',
disableSSL: false,
redirectToNoWWW: true,
},
{
LXCcontainerLocalIP,
@ -59,7 +83,7 @@ const domainsConfig = [{
name: 'Claire Lemoine portfolio',
domain: 'www.clairelemoine.art',
framework: 'wordpress',
disableSSL: false,
},
{
@ -68,7 +92,7 @@ const domainsConfig = [{
name: 'Blog Qzine',
domain: 'qzine.fr',
framework: 'wordpress',
disableSSL: false,
},
{
LXCcontainerLocalIP,
@ -76,14 +100,14 @@ const domainsConfig = [{
name: 'Funky Framadate Démo',
domain: 'framadate-api.cipherbliss.com',
framework: 'symfony',
disableSSL: false,
}, {
LXCcontainerLocalIP,
LXCcontainerProtocol,
name: 'Portfolio cipherbliss',
domain: 'portfolio.cipherbliss.com',
framework: 'symfony',
disableSSL: false,
},
{
LXCcontainerLocalIP,
@ -91,7 +115,126 @@ const domainsConfig = [{
name: 'Caisse Bliss',
domain: 'caisse.cipherbliss.com',
framework: 'symfony',
disableSSL: false,
},
{
LXCcontainerLocalIP,
LXCcontainerProtocol,
name: 'Meting pot',
domain: 'meltingpot.cipherbliss.com',
framework: 'static',
},
{
LXCcontainerLocalIP,
LXCcontainerProtocol,
name: 'sous domaine de cipherbliss',
domain: 'bitwarden.cipherbliss.com',
framework: 'static',
},
{
LXCcontainerLocalIP,
LXCcontainerProtocol,
name: 'sous domaine de cipherbliss',
domain: 'c.cipherbliss.com',
framework: 'static',
},
{
LXCcontainerLocalIP,
LXCcontainerProtocol,
name: 'sous domaine de cipherbliss',
domain: 'bridge.cipherbliss.com',
framework: 'static',
},
{
LXCcontainerLocalIP,
LXCcontainerProtocol,
name: 'sous domaine de cipherbliss',
domain: 'calc.cipherbliss.com',
framework: 'static',
},
{
LXCcontainerLocalIP,
LXCcontainerProtocol,
name: 'sous domaine de cipherbliss',
domain: 'events.cipherbliss.com',
framework: 'static',
},
{
LXCcontainerLocalIP,
LXCcontainerProtocol,
name: 'sous domaine de cipherbliss',
domain: 'icinga.cipherbliss.com',
framework: 'static',
},
{
LXCcontainerLocalIP,
LXCcontainerProtocol,
name: 'sous domaine de cipherbliss',
domain: 'monit.cipherbliss.com',
framework: 'static',
},
{
LXCcontainerLocalIP,
LXCcontainerProtocol,
name: 'sous domaine de cipherbliss',
domain: 'music.cipherbliss.com',
framework: 'static',
},
{
LXCcontainerLocalIP,
LXCcontainerProtocol,
name: 'sous domaine de cipherbliss',
domain: 'nas.cipherbliss.com',
framework: 'static',
},
{
LXCcontainerLocalIP,
LXCcontainerProtocol,
name: 'sous domaine de cipherbliss',
domain: 'pass.cipherbliss.com',
framework: 'static',
},
{
LXCcontainerLocalIP,
LXCcontainerProtocol,
name: 'sous domaine de cipherbliss',
domain: 'demo.cipherbliss.com',
framework: 'static'
},
{
LXCcontainerLocalIP,
LXCcontainerProtocol,
name: 'sous domaine de cipherbliss',
domain: 'log.cipherbliss.com',
framework: 'static',
},
{
LXCcontainerLocalIP,
LXCcontainerProtocol,
name: 'sous domaine de cipherbliss',
domain: 'participalibre.cipherbliss.com',
framework: 'static',
},
{
LXCcontainerLocalIP,
LXCcontainerProtocol,
name: 'rtfm',
domain: 'www.free-software-academy.com',
framework: 'static',
},
{
LXCcontainerLocalIP,
@ -99,7 +242,7 @@ const domainsConfig = [{
name: 'Sondages Qzine',
domain: 'sondages.qzine.fr',
framework: 'symfony',
disableSSL: false,
},
{
LXCcontainerLocalIP,
@ -107,14 +250,39 @@ const domainsConfig = [{
name: 'Chaton coussinet',
domain: 'www.coussinet.org',
framework: 'static',
disableSSL: false,
},
{
LXCcontainerLocalIP,
LXCcontainerProtocol,
name: 'panel proxmox coussinet',
domain: 'panel.coussinet.org',
framework: 'static',
},
{
LXCcontainerLocalIP,
LXCcontainerProtocol,
name: 'forge sources coussinet',
domain: 'source.coussinet.org',
framework: 'static',
},
{
LXCcontainerLocalIP,
LXCcontainerProtocol,
name: 'Join Fediverse',
domain: 'www.joinfediverse.org',
redirectToWWW: true,
framework: 'static',
disableSSL: false,
},
{
LXCcontainerLocalIP,
LXCcontainerProtocol,
name: 'nextcloud',
domain: 'cloud.tykayn.fr',
framework: 'nextcloud',
},
]

View File

@ -8,8 +8,7 @@ import { makeHostFileForWordpress } from './model.wordpress.mjs'
import { makeHostFileForSymfony } from './model.symfony.mjs'
import { makeHostFileForPhpPages } from './model.php-website.mjs'
import { domainsConfig } from './domains.mjs'
import { makeHostFileForNextcloud } from './model.nextcloud.mjs'
// autres frameworks:
// nextcloud: cloud.tykayn.fr
@ -21,10 +20,11 @@ import { domainsConfig } from './domains.mjs'
// meltingpot.cipherbliss.com
// joinfediverse
// coussinet
let domainsForHostFile = [];
let domainsForHostFile = []
let createFoldersScript = ''
let domainsSorted = domainsConfig.sort((a, b) => {
return a.domain - b.domain;
return a.domain - b.domain
})
for (let configDomain of domainsSorted) {
@ -39,15 +39,45 @@ for (let configDomain of domainsSorted) {
if (configDomain.framework === 'symfony') {
hostFile = makeHostFileForSymfony(configDomain)
}
if (configDomain.framework === 'nextcloud') {
hostFile = makeHostFileForNextcloud(configDomain)
}
if (configDomain.framework === 'static') {
hostFile = makeHostFileForPhpPages(configDomain)
}
createFoldersScript += '# --------- \n'
createFoldersScript += 'mkdir -p /home/www/' + configDomain.domain + ' \n'
createFoldersScript += 'touch /home/www/' + configDomain.domain + '/index.html \n'
createFoldersScript += 'echo "coucou ' + configDomain.domain + '" > /home/www/' + configDomain.domain + '/index.html \n'
createFoldersScript += ' \n'
writeFile(configDomain.domain + '_direct.conf', hostFile.noContainerNginxConf)
}else{
writeFile(configDomain.domain + '_host.conf', hostFile.homeNginxConf)
writeFile(configDomain.domain + '_container.conf', hostFile.containerNginxConf)
let hostfileDomains = domainsForHostFile.map(domain => ' 127.0.0.1 '+domain+' \n')
}
let renewCertbotScript = domainsForHostFile.map(domain => {
if (domain.redirectToNoWWW || domain.includes('www.')) {
return ' certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d ' + domain + ' -d ' + domain.replace('www.', '') + ' \n'
} else {
return ' certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d ' + domain + ' \n'
}
}
)
let hostfileDomains = domainsForHostFile.sort((a, b) => {
return a - b
}).map(domain => ' 127.0.0.1\t' + domain + ' \n')
console.log('hostfileDomains', hostfileDomains.join('').replace(',', ''))
writeFile('hosts', hostfileDomains.join('').replace(',',''))
writeFile('certbot_renew.sh', '!#/bin/bash\n' + renewCertbotScript.join('').replace(',', ''))
writeFile('folders_create.sh', createFoldersScript.replace(',', ''))
writeFile('hosts', hostfileDomains.join('')
.replace(',', ''))
}
function writeFile (fileName, fileContent) {

View File

@ -0,0 +1,95 @@
/**
* turns a domain config to two config files for nginx web sever on proxmox and its container
* @param domainConfig
* @returns {{homeNginxConf: string, containerNginxConf: string, noContainerNginxConf: string}}
*/
export function makeHostFileForNextcloud (domainConfig) {
let domainWithoutWWW = domainConfig.domain;
if(domainConfig.domain.includes('www.')){
domainWithoutWWW = domainConfig.domain.replace('www.', '')
}
let redirectToNoWWW = domainConfig.redirectToNoWWW | false;
let redirectToNoWWWConf = `
server {
# redirect from www to non-www
server_name ${domainConfig.domain};
listen 80 http2;
return 301 https://${domainWithoutWWW}$request_uri;
}
`;
let redirectToWWW = domainConfig.redirectToWWW | true;
let redirectToWWWConf = `
server {
# redirect from non-www to www
server_name ${domainWithoutWWW};
listen 80 http2;
return 301 https://${domainConfig.domain}$request_uri;
}
`;
let redirectToHTTPS = domainConfig.redirectToNoHTTPS | true;
let redirectToHTTPSConf = `
server {
# redirect to https from http no WWW
server_name ${domainWithoutWWW};
listen 80 http2;
return 301 https://${domainWithoutWWW}$request_uri;
}
`;
if(redirectToWWW && redirectToHTTPS){
redirectToWWWConf += `\tserver {
\t\t\t\t# redirect from www to HTTPS too
server_name ${domainConfig.domain};
listen 80 http2;
return 301 https://${domainConfig.domain}$request_uri;
}`
}
let hostingFileAccess = ` `;
/**
*
* @type {{homeNginxConf: string, containerNginxConf: string, noContainerNginxConf: string}}
*/
const model = {
noContainerNginxConf: `
# ============ ${domainConfig.name} ===============
`,
homeNginxConf: `
# ============ ${domainConfig.name} ===============
server {
server_name ${domainConfig.domain};
listen 80;
return 301 ${domainConfig.domain}$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name ${domainConfig.domain};
ssl_certificate /etc/letsencrypt/live/${domainConfig.domain}/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/${domainConfig.domain}/privkey.pem;
location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
# Container nextcloud
proxy_pass https://10.10.10.106;
}
add_header Permissions-Policy "interest-cohort=()";
}
`,
containerNginxConf: `
# ============ ${domainConfig.name} | côté conteneur LXC ===============
# rien à ajouter si c'est du snap
# ========================== ${domainConfig.name} | fin ================ #
`
}
return model
}

View File

@ -1,7 +1,7 @@
/**
* turns a domain config to two config files for nginx web sever on proxmox and its container
* @param domainConfig
* @returns {{homeNginxConf: string, containerNginxConf: string}}
* @returns {{homeNginxConf: string, containerNginxConf: string, noContainerNginxConf: string}}
*/
export function makeHostFileForPhpPages (domainConfig) {
@ -9,85 +9,61 @@ export function makeHostFileForPhpPages (domainConfig) {
if(domainConfig.domain.includes('www.')){
domainWithoutWWW = domainConfig.domain.replace('www.', '')
}
let certbotChallengeAcmeRedirect = `
\tlocation ^~ /.well-known/acme-challenge/ {
\t\tallow all;
\t\troot /var/lib/letsencrypt/;
\t\tdefault_type "text/plain";
\t\ttry_files $uri =404;
\t}
`;
let redirectToNoWWW = false;
let redirectToNoWWW = domainConfig.redirectToNoWWW | false;
let redirectToNoWWWConf = `
server {
# redirect from www to non-www
server_name ${domainConfig.domain};
listen 80 http2;
return 301 https://${domainWithoutWWW}$request_uri;
}
\tserver {
\t\t# redirect from www to non-www
\t\tserver_name ${domainConfig.domain};
\t\tlisten 80 http2;
\t\treturn 301 https://${domainWithoutWWW}$request_uri;
\t}
`;
let redirectToWWW = true;
let redirectToWWW = domainConfig.redirectToWWW | true;
let redirectToWWWConf = `
server {
# redirect from non-www to www
server_name ${domainWithoutWWW};
listen 80 http2;
return 301 https://${domainConfig.domain}$request_uri;
}
\tserver {
\t\t# redirect from non-www to www
\t\tserver_name ${domainWithoutWWW};
\t\tlisten 80 http2;
\t\treturn 301 https://${domainConfig.domain}$request_uri;
\t}
`;
let redirectToHTTPS = true;
let redirectToHTTPS = domainConfig.redirectToNoHTTPS | true;
let redirectToHTTPSConf = `
server {
# redirect to https from http
\tserver {
\t\t# redirect to https from http no WWW
\t\tserver_name ${domainWithoutWWW};
\t\tlisten 80 http2;
${certbotChallengeAcmeRedirect}
\t\t# return 301 https://${domainWithoutWWW}$request_uri;
\t}
`;
if(redirectToWWW && redirectToHTTPS){
redirectToWWWConf += `\tserver {
\t\t\t\t# redirect from www to HTTPS too
server_name ${domainConfig.domain};
listen 80 http2;
return 301 https://${domainConfig.domain}$request_uri;
}
`;
/**
* @type {{homeNginxConf: string, containerNginxConf: string}}
*/
const model = {
homeNginxConf: `
# ============ ${domainConfig.name} ===============
${redirectToNoWWW ? redirectToNoWWWConf : '' }
${redirectToWWW ? redirectToWWWConf : '' }
${redirectToHTTPS ? redirectToHTTPSConf : '' }
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name ${domainConfig.domain};
ssl_certificate /etc/letsencrypt/live/${domainConfig.domain}-0001/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/${domainConfig.domain}-0001/privkey.pem;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
# Container tksites
proxy_pass ${domainConfig.LXCcontainerProtocol}://${domainConfig.LXCcontainerLocalIP};
}`
}
add_header Permissions-Policy "interest-cohort=()";
include /etc/nginx/snippets/letsencrypt-acme-challenge.conf;
}
`,
containerNginxConf: `
# ============ ${domainConfig.name} | côté conteneur LXC ===============
server {
if ($host = ${domainConfig.domain}) {
return 301 https://$host$request_uri;
}
listen 80 ;
listen [::]:80 ;
server_name ${domainConfig.domain};
add_header Permissions-Policy "interest-cohort=()";
let hostingFileAccess = `
# ----------- hosting file config ----------------
root /home/www/${domainConfig.domain};
index index.php index.html;
location = /favicon.ico {
@ -106,7 +82,6 @@ server {
}
location ~ \\.php$ {
#NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
include fastcgi.conf;
fastcgi_intercept_errors on;
fastcgi_pass php-handler;
@ -116,8 +91,77 @@ server {
expires max;
log_not_found off;
}
add_header Permissions-Policy "interest-cohort=()";
include /etc/nginx/snippets/letsencrypt-acme-challenge.conf;
`;
/**
*
* @type {{homeNginxConf: string, containerNginxConf: string, noContainerNginxConf: string}}
*/
const model = {
noContainerNginxConf: `
# ============ ${domainConfig.name} ===============
${redirectToNoWWW ? redirectToNoWWWConf : '' }
${redirectToWWW ? redirectToWWWConf : '' }
${redirectToHTTPS ? redirectToHTTPSConf : '' }
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name ${domainConfig.domain};
ssl_certificate /etc/letsencrypt/live/${domainConfig.domain}-0001/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/${domainConfig.domain}-0001/privkey.pem;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
${hostingFileAccess}
${certbotChallengeAcmeRedirect}
}
`,
homeNginxConf: `
# ============ ${domainConfig.name} ===============
${redirectToNoWWW ? redirectToNoWWWConf : '' }
${redirectToWWW ? redirectToWWWConf : '' }
${redirectToHTTPS ? redirectToHTTPSConf : '' }
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name ${domainConfig.domain};
ssl_certificate /etc/letsencrypt/live/${domainConfig.domain}-0001/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/${domainConfig.domain}-0001/privkey.pem;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
${hostingFileAccess}
}
`,
containerNginxConf: `
# ============ ${domainConfig.name} | côté conteneur LXC ===============
server {
if ($host = ${domainConfig.domain}) {
return 301 https://$host$request_uri;
}
listen 80 ;
listen [::]:80 ;
server_name ${domainConfig.domain};
${hostingFileAccess}
}
# ========================== ${domainConfig.name} | fin ================ #
`

View File

@ -5,6 +5,7 @@
*/
export function makeHostFileForSymfony(domainConfig){
const model = {
noContainerNginxConf: ``,
homeNginxConf : `
# ---------------- ${domainConfig.name} -------------------------
# ---------- un site utilisant Symfony --------------------------

View File

@ -17,6 +17,7 @@ export function makeHostFileForWordpress (domainConfig) {
* @type {{homeNginxConf: string, containerNginxConf: string}}
*/
const model = {
noContainerNginxConf: ``,
homeNginxConf: `
# ============ ${domainConfig.name} ===============
# ---------- un site utilisant Wordpress ----------

View File

@ -0,0 +1,34 @@
!#/bin/bash
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d www.cipherbliss.com -d cipherbliss.com
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d portfolio.cipherbliss.com
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d tykayn.fr
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d www.pucealoreille.fr -d pucealoreille.fr
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d www.unbecetdesailes.fr -d unbecetdesailes.fr
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d www.catherinefonder.fr -d catherinefonder.fr
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d www.lafromagerie-bsf.com -d lafromagerie-bsf.com
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d www.clairelemoine.art -d clairelemoine.art
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d qzine.fr
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d framadate-api.cipherbliss.com
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d portfolio.cipherbliss.com
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d caisse.cipherbliss.com
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d meltingpot.cipherbliss.com
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d bitwarden.cipherbliss.com
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d c.cipherbliss.com
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d bridge.cipherbliss.com
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d calc.cipherbliss.com
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d events.cipherbliss.com
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d icinga.cipherbliss.com
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d monit.cipherbliss.com
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d music.cipherbliss.com
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d nas.cipherbliss.com
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d pass.cipherbliss.com
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d demo.cipherbliss.com
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d log.cipherbliss.com
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d participalibre.cipherbliss.com
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d www.free-software-academy.com -d free-software-academy.com
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d sondages.qzine.fr
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d www.coussinet.org -d coussinet.org
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d panel.coussinet.org
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d source.coussinet.org
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d www.joinfediverse.org -d joinfediverse.org
certbot certonly -a webroot --webroot-path=/tmp/letsencrypt-auto -d cloud.tykayn.fr

View File

@ -0,0 +1,95 @@
# ---------
mkdir -p /home/www/meltingpot.cipherbliss.com
touch /home/www/meltingpot.cipherbliss.com/index.html
echo "coucou meltingpot.cipherbliss.com" > /home/www/meltingpot.cipherbliss.com/index.html
# ---------
mkdir -p /home/www/bitwarden.cipherbliss.com
touch /home/www/bitwarden.cipherbliss.com/index.html
echo "coucou bitwarden.cipherbliss.com" > /home/www/bitwarden.cipherbliss.com/index.html
# ---------
mkdir -p /home/www/c.cipherbliss.com
touch /home/www/c.cipherbliss.com/index.html
echo "coucou c.cipherbliss.com" > /home/www/c.cipherbliss.com/index.html
# ---------
mkdir -p /home/www/bridge.cipherbliss.com
touch /home/www/bridge.cipherbliss.com/index.html
echo "coucou bridge.cipherbliss.com" > /home/www/bridge.cipherbliss.com/index.html
# ---------
mkdir -p /home/www/calc.cipherbliss.com
touch /home/www/calc.cipherbliss.com/index.html
echo "coucou calc.cipherbliss.com" > /home/www/calc.cipherbliss.com/index.html
# ---------
mkdir -p /home/www/events.cipherbliss.com
touch /home/www/events.cipherbliss.com/index.html
echo "coucou events.cipherbliss.com" > /home/www/events.cipherbliss.com/index.html
# ---------
mkdir -p /home/www/icinga.cipherbliss.com
touch /home/www/icinga.cipherbliss.com/index.html
echo "coucou icinga.cipherbliss.com" > /home/www/icinga.cipherbliss.com/index.html
# ---------
mkdir -p /home/www/monit.cipherbliss.com
touch /home/www/monit.cipherbliss.com/index.html
echo "coucou monit.cipherbliss.com" > /home/www/monit.cipherbliss.com/index.html
# ---------
mkdir -p /home/www/music.cipherbliss.com
touch /home/www/music.cipherbliss.com/index.html
echo "coucou music.cipherbliss.com" > /home/www/music.cipherbliss.com/index.html
# ---------
mkdir -p /home/www/nas.cipherbliss.com
touch /home/www/nas.cipherbliss.com/index.html
echo "coucou nas.cipherbliss.com" > /home/www/nas.cipherbliss.com/index.html
# ---------
mkdir -p /home/www/pass.cipherbliss.com
touch /home/www/pass.cipherbliss.com/index.html
echo "coucou pass.cipherbliss.com" > /home/www/pass.cipherbliss.com/index.html
# ---------
mkdir -p /home/www/demo.cipherbliss.com
touch /home/www/demo.cipherbliss.com/index.html
echo "coucou demo.cipherbliss.com" > /home/www/demo.cipherbliss.com/index.html
# ---------
mkdir -p /home/www/log.cipherbliss.com
touch /home/www/log.cipherbliss.com/index.html
echo "coucou log.cipherbliss.com" > /home/www/log.cipherbliss.com/index.html
# ---------
mkdir -p /home/www/participalibre.cipherbliss.com
touch /home/www/participalibre.cipherbliss.com/index.html
echo "coucou participalibre.cipherbliss.com" > /home/www/participalibre.cipherbliss.com/index.html
# ---------
mkdir -p /home/www/www.free-software-academy.com
touch /home/www/www.free-software-academy.com/index.html
echo "coucou www.free-software-academy.com" > /home/www/www.free-software-academy.com/index.html
# ---------
mkdir -p /home/www/www.coussinet.org
touch /home/www/www.coussinet.org/index.html
echo "coucou www.coussinet.org" > /home/www/www.coussinet.org/index.html
# ---------
mkdir -p /home/www/panel.coussinet.org
touch /home/www/panel.coussinet.org/index.html
echo "coucou panel.coussinet.org" > /home/www/panel.coussinet.org/index.html
# ---------
mkdir -p /home/www/source.coussinet.org
touch /home/www/source.coussinet.org/index.html
echo "coucou source.coussinet.org" > /home/www/source.coussinet.org/index.html
# ---------
mkdir -p /home/www/www.joinfediverse.org
touch /home/www/www.joinfediverse.org/index.html
echo "coucou www.joinfediverse.org" > /home/www/www.joinfediverse.org/index.html

View File

@ -10,6 +10,24 @@
127.0.0.1 framadate-api.cipherbliss.com
127.0.0.1 portfolio.cipherbliss.com
127.0.0.1 caisse.cipherbliss.com
127.0.0.1 meltingpot.cipherbliss.com
127.0.0.1 bitwarden.cipherbliss.com
127.0.0.1 c.cipherbliss.com
127.0.0.1 bridge.cipherbliss.com
127.0.0.1 calc.cipherbliss.com
127.0.0.1 events.cipherbliss.com
127.0.0.1 icinga.cipherbliss.com
127.0.0.1 monit.cipherbliss.com
127.0.0.1 music.cipherbliss.com
127.0.0.1 nas.cipherbliss.com
127.0.0.1 pass.cipherbliss.com
127.0.0.1 demo.cipherbliss.com
127.0.0.1 log.cipherbliss.com
127.0.0.1 participalibre.cipherbliss.com
127.0.0.1 www.free-software-academy.com
127.0.0.1 sondages.qzine.fr
127.0.0.1 www.coussinet.org
127.0.0.1 panel.coussinet.org
127.0.0.1 source.coussinet.org
127.0.0.1 www.joinfediverse.org
127.0.0.1 cloud.tykayn.fr