first build of the site with hugo
1435
public/2015/04/24/setting-up-a-mail-server/index.html
Normal file
625
public/2015/05/25/flexget-init-script/index.html
Normal file
@ -0,0 +1,625 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en-us">
|
||||||
|
<head>
|
||||||
|
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:card" content="summary"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:title" content="Flexget init script"/>
|
||||||
|
<meta name="twitter:description" content=""/>
|
||||||
|
<meta name="twitter:site" content="@"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:title" content="Flexget init script · Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:site_name" content="Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:url" content="https://www.captainark.net/2015/05/25/flexget-init-script/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:image" content="/images/cover.jpg"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:description" content="" />
|
||||||
|
<meta property="og:type" content="article" />
|
||||||
|
<meta property="article:published_time" content="2015-05-25T00:00:00+01:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<title>Flexget init script · Sysadmining. All day. Every day.</title>
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="description" content="I&rsquo;ve been using Flexget for the past two years or so as a download automator.
|
||||||
|
Since I wrote an init script for it a while back, and it is compatible with " />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="HandheldFriendly" content="True" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="/images/favicon.ico">
|
||||||
|
<link rel="apple-touch-icon" href="/images/apple-touch-icon.png" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/screen.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/nav.css" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/solarized-light.min.css">
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js"></script>
|
||||||
|
|
||||||
|
<script>hljs.initHighlightingOnLoad();</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link href="/index.xml" rel="alternate" type="application/rss+xml" title="Sysadmining. All day. Every day." />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="generator" content="Hugo 0.53" />
|
||||||
|
|
||||||
|
<link rel="canonical" href="https://www.captainark.net/2015/05/25/flexget-init-script/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "Article",
|
||||||
|
"publisher": {
|
||||||
|
"@type": "Organization",
|
||||||
|
"name": ,
|
||||||
|
"logo": https://www.captainark.net/images/logo.png
|
||||||
|
},
|
||||||
|
"author": {
|
||||||
|
"@type": "Person",
|
||||||
|
"name": ,
|
||||||
|
|
||||||
|
"image": {
|
||||||
|
"@type": "ImageObject",
|
||||||
|
"url": https://www.captainark.net/images/author.jpg,
|
||||||
|
"width": 250,
|
||||||
|
"height": 250
|
||||||
|
},
|
||||||
|
|
||||||
|
"url": https://www.captainark.net,
|
||||||
|
"sameAs": [
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
],
|
||||||
|
"description": Geek | Gamer | TV Shows Aficionado
|
||||||
|
|
||||||
|
},
|
||||||
|
"headline": Flexget init script,
|
||||||
|
"name": Flexget init script,
|
||||||
|
"wordCount": 715,
|
||||||
|
"timeRequired": "PT4M",
|
||||||
|
"inLanguage": {
|
||||||
|
"@type": "Language",
|
||||||
|
"alternateName": en
|
||||||
|
},
|
||||||
|
"url": https://www.captainark.net/2015/05/25/flexget-init-script/,
|
||||||
|
"datePublished": 2015-05-25T00:00Z,
|
||||||
|
"dateModified": 2015-05-25T00:00Z,
|
||||||
|
|
||||||
|
|
||||||
|
"description": ,
|
||||||
|
"mainEntityOfPage": {
|
||||||
|
"@type": "WebPage",
|
||||||
|
"@id": https://www.captainark.net/2015/05/25/flexget-init-script/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
(function(f, a, t, h, o, m){
|
||||||
|
a[h]=a[h]||function(){
|
||||||
|
(a[h].q=a[h].q||[]).push(arguments)
|
||||||
|
};
|
||||||
|
o=f.createElement('script'),
|
||||||
|
m=f.getElementsByTagName('script')[0];
|
||||||
|
o.async=1; o.src=t; o.id='fathom-script';
|
||||||
|
m.parentNode.insertBefore(o,m)
|
||||||
|
})(document, window, '//stats.captainark.net/tracker.js', 'fathom');
|
||||||
|
fathom('set', 'siteId', 'GEWGL');
|
||||||
|
fathom('trackPageview');
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.1.5/css/fork-awesome.min.css" integrity="sha256-P64qV9gULPHiZTdrS1nM59toStkgjM0dsf5mK/UwBV4=" crossorigin="anonymous">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body class="nav-closed">
|
||||||
|
|
||||||
|
<div class="nav">
|
||||||
|
<h3 class="nav-title">Menu</h3>
|
||||||
|
<a href="#" class="nav-close">
|
||||||
|
<span class="hidden">Close</span>
|
||||||
|
</a>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h3>This site</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/about">About</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/resume">Resume</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<h3>Other services</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://git.captainark.net">Gitea</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://pics.captainark.net">Chevereto</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://paste.captainark.net">Privatebin</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://chat.captainark.net">Rocket.Chat</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="subscribe-button icon-feed" href="/index.xml">Subscribe</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<span class="nav-cover"></span>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="site-wrapper">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<header class="main-header post-head no-cover">
|
||||||
|
<nav class="main-nav clearfix">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a class="blog-logo" href="https://www.captainark.net/"><img src="/images/logo.png" alt="Home" /></a>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="menu-button" href="#"><span class="burger">☰</span><span class="word">Menu</span></a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<main class="content" role="main">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post post">
|
||||||
|
|
||||||
|
<header class="post-header">
|
||||||
|
<h1 class="post-title">Flexget init script</h1>
|
||||||
|
<small></small>
|
||||||
|
|
||||||
|
<section class="post-meta">
|
||||||
|
|
||||||
|
<time class="post-date" datetime="2015-05-25T00:00:00+01:00">
|
||||||
|
25 May 2015
|
||||||
|
</time>
|
||||||
|
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<section class="post-content">
|
||||||
|
|
||||||
|
|
||||||
|
<p>I’ve been using <a href="http://flexget.com/">Flexget</a> for the past two years or so as a download automator.</p>
|
||||||
|
|
||||||
|
<p>Since I wrote an <a href="http://flexget.com/wiki/Daemon/Startup#InsservscriptDebiancompatible">init script</a> for it a while back, and it is compatible with Debian Jessie / systemd, I figured I’d share it here.</p>
|
||||||
|
|
||||||
|
<h2 id="the-script">The script</h2>
|
||||||
|
|
||||||
|
<p>All of the following should be done as the root user.</p>
|
||||||
|
|
||||||
|
<p>First, create a /etc/default/flexget file with the following content :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash"># Configuration file for /etc/init.d/flexget
|
||||||
|
|
||||||
|
# User to run flexget as.
|
||||||
|
# Daemon will not start if left empty.
|
||||||
|
FGUSER=""
|
||||||
|
|
||||||
|
# Full path to the flexget config.yml file to use.
|
||||||
|
# Defaults to FGUSER $HOME/.flexget/config.yml
|
||||||
|
CONFIG=""
|
||||||
|
|
||||||
|
# Path to the directory where flexget should log. Do not add trailing slash.
|
||||||
|
# Defaults to the FGUSER $HOME/.flexget directory
|
||||||
|
LOG=""
|
||||||
|
|
||||||
|
# Log verbosity
|
||||||
|
# Available options : none critical error warning info verbose debug trace
|
||||||
|
# Defaults to info
|
||||||
|
LEVEL=""
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>Please note that the FGUSER variable needs to be defined for the daemon to start. It can be set to your current user, or you can run flexget as its own user.</p>
|
||||||
|
|
||||||
|
<p>You can create a flexget user with the following command :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">useradd -m -d /var/lib/flexget -r -s /bin/false flexget
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>Then, create the /etc/init.d/flexget file :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">#!/bin/bash
|
||||||
|
|
||||||
|
### BEGIN INIT INFO
|
||||||
|
# Provides: flexget
|
||||||
|
# Required-Start: $network $remote_fs
|
||||||
|
# Required-Stop: $network $remote_fs
|
||||||
|
# Should-Start:
|
||||||
|
# Should-Stop:
|
||||||
|
# Default-Start: 2 3 4 5
|
||||||
|
# Default-Stop: 0 1 6
|
||||||
|
# Short-Description: Flexget
|
||||||
|
# Description: FlexGet is a multipurpose automation tool
|
||||||
|
# for content like torrents, nzbs, podcasts,
|
||||||
|
# comics, series, movies, etc.
|
||||||
|
### END INIT INFO
|
||||||
|
|
||||||
|
# Author: Antoine Joubert, 19/01/2014
|
||||||
|
|
||||||
|
NAME="flexget"
|
||||||
|
DAEMON="/usr/local/bin/flexget"
|
||||||
|
SETTINGS="/etc/default/$NAME"
|
||||||
|
|
||||||
|
DESC="Flexget"
|
||||||
|
PIDFILE="/var/run/$NAME.pid"
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
. /lib/lsb/init-functions
|
||||||
|
|
||||||
|
unset FGUSER CONFIG LOG LEVEL
|
||||||
|
|
||||||
|
# Exit if flexget not installed
|
||||||
|
if [ ! -x "$DAEMON" ]; then
|
||||||
|
log_action_msg "$DESC: Could not find flexget executable. Exiting."
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Read configuration variables
|
||||||
|
if [ -r /etc/default/$NAME ]; then
|
||||||
|
. /etc/default/$NAME
|
||||||
|
else
|
||||||
|
log_action_msg "$DESC: /etc/default/$NAME not found. Exiting."
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Exit if FGUSER has not been set in /etc/default/flexget
|
||||||
|
if [ -z $FGUSER ]; then
|
||||||
|
log_action_msg "$DESC: FGUSER not set in /etc/default/$NAME. Exiting."
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Function to verify if flexget is already running
|
||||||
|
run_check() {
|
||||||
|
if [ -e $PIDFILE ]; then
|
||||||
|
status_of_proc -p $PIDFILE $DAEMON $NAME > /dev/null && RETVAL=0 || RETVAL="$?"
|
||||||
|
else
|
||||||
|
RETVAL="2"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
end_log() {
|
||||||
|
if [ $RETVAL -eq 0 ]; then
|
||||||
|
log_end_msg 0
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
log_end_msg 1
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to define config file, log file and log level
|
||||||
|
conf_check() {
|
||||||
|
if [ -z $CONFIG ]; then
|
||||||
|
OPTIONS="$OPTIONS"
|
||||||
|
else
|
||||||
|
OPTIONS="-c $CONFIG"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z $LOG ]; then
|
||||||
|
OPTIONS="$OPTIONS"
|
||||||
|
else
|
||||||
|
OPTIONS="$OPTIONS -l $LOG/flexget.log"
|
||||||
|
if [ ! -d $LOG ]; then
|
||||||
|
mkdir -p -m 750 $LOG
|
||||||
|
chown $FGUSER $LOG
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z $LEVEL ]; then
|
||||||
|
OPTIONS="$OPTIONS"
|
||||||
|
else
|
||||||
|
OPTIONS="$OPTIONS -L $LEVEL"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
start_flexget() {
|
||||||
|
run_check
|
||||||
|
if [ $RETVAL = 0 ]; then
|
||||||
|
log_action_msg "$DESC: Already running with PID $(cat $PIDFILE). Aborting."
|
||||||
|
exit 2
|
||||||
|
else
|
||||||
|
conf_check
|
||||||
|
log_daemon_msg "$DESC: Starting the daemon."
|
||||||
|
start-stop-daemon --start --background --quiet --pidfile $PIDFILE --make-pidfile \
|
||||||
|
--chuid $FGUSER --user $FGUSER --exec $DAEMON -- $OPTIONS daemon start
|
||||||
|
RETVAL=$?
|
||||||
|
end_log
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
stop_flexget() {
|
||||||
|
run_check
|
||||||
|
if [ $RETVAL = 0 ]; then
|
||||||
|
log_daemon_msg "$DESC: Stopping the daemon."
|
||||||
|
start-stop-daemon --stop --quiet --chuid "$FGUSER" --pidfile "$PIDFILE" --retry 30
|
||||||
|
RETVAL=$?
|
||||||
|
[ -e "$PIDFILE" ] && rm -f "$PIDFILE"
|
||||||
|
end_log
|
||||||
|
else
|
||||||
|
log_action_msg "$DESC: Not currently running. Aborting."
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
status_flexget() {
|
||||||
|
run_check
|
||||||
|
if [ $RETVAL = 0 ]; then
|
||||||
|
log_action_msg "$DESC: Currently running with PID $(cat $PIDFILE)."
|
||||||
|
else
|
||||||
|
log_action_msg "$DESC: Not currently running."
|
||||||
|
fi
|
||||||
|
exit $RETVAL
|
||||||
|
}
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
start)
|
||||||
|
start_flexget
|
||||||
|
;;
|
||||||
|
stop)
|
||||||
|
stop_flexget
|
||||||
|
;;
|
||||||
|
restart)
|
||||||
|
stop_flexget && sleep 2 && start_flexget
|
||||||
|
;;
|
||||||
|
status)
|
||||||
|
status_flexget
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Usage: $0 {start|stop|restart|status}"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>Then, give execution rights to the script :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">chmod +x /etc/init.d/flexget
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>And then, generate the necessary symlinks for the service to start on boot :</p>
|
||||||
|
|
||||||
|
<p><em>Debian Jessie</em></p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">systemctl enable flexget
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p><em>Debian Wheezy</em></p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">insserv flexget
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>To start, stop or check if the daemon is running :</p>
|
||||||
|
|
||||||
|
<p><em>Debian Jessie</em></p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">systemctl start flexget
|
||||||
|
systemctl stop flexget
|
||||||
|
systemctl status flexget
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p><em>Debian Wheezy / Jessie</em></p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">service flexget start
|
||||||
|
service flexget stop
|
||||||
|
service flexget status
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p><em>Debian Wheezy</em></p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">/etc/init.d/flexget start
|
||||||
|
/etc/init.d/flexget stop
|
||||||
|
/etc/init.d/flexget status
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h2 id="conclusion">Conclusion</h2>
|
||||||
|
|
||||||
|
<p>That’s all ! If you are using this script, please let me know in the comment section below !</p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="post-footer">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<figure class="author-image">
|
||||||
|
<a class="img" href="https://www.captainark.net/" style="background-image: url(/images/author.jpg)"><span class="hidden">Antoine Joubert's Picture</span></a>
|
||||||
|
</figure>
|
||||||
|
|
||||||
|
|
||||||
|
<section class="author">
|
||||||
|
<h4><a href="https://www.captainark.net/">Antoine Joubert</a></h4>
|
||||||
|
|
||||||
|
<p>Geek | Gamer | TV Shows Aficionado</p>
|
||||||
|
|
||||||
|
<div class="author-meta">
|
||||||
|
<span class="author-location icon-location">Angers, France</span>
|
||||||
|
<span class="author-link icon-link"><a href="https://www.captainark.net">https://www.captainark.net</a></span>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
|
||||||
|
<aside class="read-next">
|
||||||
|
|
||||||
|
<a class="read-next-story" style="no-cover" href="/2015/11/19/installing-ghost/">
|
||||||
|
<section class="post">
|
||||||
|
<h2>Installing Ghost</h2>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="read-next-story prev" style="no-cover" href="/2015/04/24/setting-up-a-mail-server/">
|
||||||
|
<section class="post">
|
||||||
|
<h2>Setting up a mail server</h2>
|
||||||
|
</section>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<center>
|
||||||
|
<a class="fa-icons" href="mailto:contact@captainark.net">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-envelope fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://twitter.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://social.captainark.net/users/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-mastodon-alt fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://github.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.last.fm/user/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-lastfm fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://steamcommunity.com/id/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-steam fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.twitch.tv/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitch fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</center>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="site-footer clearfix">
|
||||||
|
<section class="copyright"><a href="">Sysadmining. All day. Every day.</a> © 2015 - 2019</section>
|
||||||
|
|
||||||
|
<section class="poweredby">Proudly generated by <a class="icon-hugo" href="http://gohugo.io">HUGO</a>, with <a class="icon-theme" href="https://github.com/vjeantet/hugo-theme-casper">Casper</a> theme</section>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript" src="/js/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/jquery.fitvids.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/index.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
675
public/2015/11/19/installing-ghost/index.html
Normal file
@ -0,0 +1,675 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en-us">
|
||||||
|
<head>
|
||||||
|
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:card" content="summary"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:title" content="Installing Ghost"/>
|
||||||
|
<meta name="twitter:description" content=""/>
|
||||||
|
<meta name="twitter:site" content="@"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:title" content="Installing Ghost · Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:site_name" content="Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:url" content="https://www.captainark.net/2015/11/19/installing-ghost/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:image" content="/images/cover.jpg"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:description" content="" />
|
||||||
|
<meta property="og:type" content="article" />
|
||||||
|
<meta property="article:published_time" content="2015-11-19T00:00:00+01:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<title>Installing Ghost · Sysadmining. All day. Every day.</title>
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="description" content="I haven&rsquo;t published an article on here for over a year and a half&hellip; While this was mostly due to a lack of motivation, another reason was that I did" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="HandheldFriendly" content="True" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="/images/favicon.ico">
|
||||||
|
<link rel="apple-touch-icon" href="/images/apple-touch-icon.png" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/screen.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/nav.css" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/solarized-light.min.css">
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js"></script>
|
||||||
|
|
||||||
|
<script>hljs.initHighlightingOnLoad();</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link href="/index.xml" rel="alternate" type="application/rss+xml" title="Sysadmining. All day. Every day." />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="generator" content="Hugo 0.53" />
|
||||||
|
|
||||||
|
<link rel="canonical" href="https://www.captainark.net/2015/11/19/installing-ghost/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "Article",
|
||||||
|
"publisher": {
|
||||||
|
"@type": "Organization",
|
||||||
|
"name": ,
|
||||||
|
"logo": https://www.captainark.net/images/logo.png
|
||||||
|
},
|
||||||
|
"author": {
|
||||||
|
"@type": "Person",
|
||||||
|
"name": ,
|
||||||
|
|
||||||
|
"image": {
|
||||||
|
"@type": "ImageObject",
|
||||||
|
"url": https://www.captainark.net/images/author.jpg,
|
||||||
|
"width": 250,
|
||||||
|
"height": 250
|
||||||
|
},
|
||||||
|
|
||||||
|
"url": https://www.captainark.net,
|
||||||
|
"sameAs": [
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
],
|
||||||
|
"description": Geek | Gamer | TV Shows Aficionado
|
||||||
|
|
||||||
|
},
|
||||||
|
"headline": Installing Ghost,
|
||||||
|
"name": Installing Ghost,
|
||||||
|
"wordCount": 1509,
|
||||||
|
"timeRequired": "PT8M",
|
||||||
|
"inLanguage": {
|
||||||
|
"@type": "Language",
|
||||||
|
"alternateName": en
|
||||||
|
},
|
||||||
|
"url": https://www.captainark.net/2015/11/19/installing-ghost/,
|
||||||
|
"datePublished": 2015-11-19T00:00Z,
|
||||||
|
"dateModified": 2015-11-19T00:00Z,
|
||||||
|
|
||||||
|
|
||||||
|
"description": ,
|
||||||
|
"mainEntityOfPage": {
|
||||||
|
"@type": "WebPage",
|
||||||
|
"@id": https://www.captainark.net/2015/11/19/installing-ghost/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
(function(f, a, t, h, o, m){
|
||||||
|
a[h]=a[h]||function(){
|
||||||
|
(a[h].q=a[h].q||[]).push(arguments)
|
||||||
|
};
|
||||||
|
o=f.createElement('script'),
|
||||||
|
m=f.getElementsByTagName('script')[0];
|
||||||
|
o.async=1; o.src=t; o.id='fathom-script';
|
||||||
|
m.parentNode.insertBefore(o,m)
|
||||||
|
})(document, window, '//stats.captainark.net/tracker.js', 'fathom');
|
||||||
|
fathom('set', 'siteId', 'GEWGL');
|
||||||
|
fathom('trackPageview');
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.1.5/css/fork-awesome.min.css" integrity="sha256-P64qV9gULPHiZTdrS1nM59toStkgjM0dsf5mK/UwBV4=" crossorigin="anonymous">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body class="nav-closed">
|
||||||
|
|
||||||
|
<div class="nav">
|
||||||
|
<h3 class="nav-title">Menu</h3>
|
||||||
|
<a href="#" class="nav-close">
|
||||||
|
<span class="hidden">Close</span>
|
||||||
|
</a>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h3>This site</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/about">About</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/resume">Resume</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<h3>Other services</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://git.captainark.net">Gitea</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://pics.captainark.net">Chevereto</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://paste.captainark.net">Privatebin</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://chat.captainark.net">Rocket.Chat</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="subscribe-button icon-feed" href="/index.xml">Subscribe</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<span class="nav-cover"></span>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="site-wrapper">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<header class="main-header post-head no-cover">
|
||||||
|
<nav class="main-nav clearfix">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a class="blog-logo" href="https://www.captainark.net/"><img src="/images/logo.png" alt="Home" /></a>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="menu-button" href="#"><span class="burger">☰</span><span class="word">Menu</span></a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<main class="content" role="main">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post post">
|
||||||
|
|
||||||
|
<header class="post-header">
|
||||||
|
<h1 class="post-title">Installing Ghost</h1>
|
||||||
|
<small></small>
|
||||||
|
|
||||||
|
<section class="post-meta">
|
||||||
|
|
||||||
|
<time class="post-date" datetime="2015-11-19T00:00:00+01:00">
|
||||||
|
19 November 2015
|
||||||
|
</time>
|
||||||
|
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<section class="post-content">
|
||||||
|
|
||||||
|
|
||||||
|
<p>I haven’t published an article on here for over a year and a half… While this was mostly due to a lack of motivation, another reason was that I didn’t enjoy the blogging system I was using.</p>
|
||||||
|
|
||||||
|
<p>As lightweight as <a href="https://blog.getpelican.com/">Pelican</a> is, I found it cumbersome to use on a regular basis. Every time I wanted to publish or update an article, I had to :
|
||||||
|
- edit local markdown files ;
|
||||||
|
- regenerate the website files ;
|
||||||
|
- start a webserver locally to proofread the article ;
|
||||||
|
- commit and push the files to my git repo ;
|
||||||
|
- pull the files on the webserver.</p>
|
||||||
|
|
||||||
|
<p>I hadn’t had a look at the CMS landscape for a while, and I started searching for one with a web editor that supports markdown. I also wanted to avoid anything that runs on PHP if possible.</p>
|
||||||
|
|
||||||
|
<p>I quickly discovered <a href="https://ghost.org/">Ghost</a>, and decided to give it a shot. I was convinced by it within a few hours and I decided to migrate this blog.</p>
|
||||||
|
|
||||||
|
<p>So, to celebrate my move to Ghost, I figured I’d write an article on how I’ve installed it on my server.</p>
|
||||||
|
|
||||||
|
<p>All commands in this article have to be run as the <code>root</code> user on a Debian server.</p>
|
||||||
|
|
||||||
|
<h1 id="installing-nodejs">Installing nodejs</h1>
|
||||||
|
|
||||||
|
<p>Unlike most CMS (Wordpress, for example), Ghost is not files that you have to upload to a webserver, but a daemon that runs on <a href="https://nodejs.org/en/">nodejs</a>.</p>
|
||||||
|
|
||||||
|
<p>Here’s the official recommended way of installing the current LTS version of nodejs on Debian :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">curl -sL https://deb.nodesource.com/setup_8.x | bash -
|
||||||
|
apt-get install -y nodejs
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>If, like me, you don’t want to run a bash script downloaded from the internet on your server, here are the commands you have to run to install it manually.</p>
|
||||||
|
|
||||||
|
<p>Since the nodejs repo uses https, we’ll first need to install the required package to use those :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">apt install apt-transport-https
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>We’ll then have to add the nodejs repository public key to the system :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>Now we have to add the nodejs repository to our sourcelist :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">echo 'deb https://deb.nodesource.com/node_8.x stretch main' > /etc/apt/sources.list.d/nodesource.list
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>We can now install nodejs</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">apt update
|
||||||
|
apt install nodejs
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h1 id="system-configuration">System configuration</h1>
|
||||||
|
|
||||||
|
<p>Before installing Ghost, some system configuration is required.</p>
|
||||||
|
|
||||||
|
<p>First, let’s create a new <code>ghost</code> system user that’ll be used to run the Ghost daemon :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">useradd -s /bin/false -r -d /opt/ghost -m ghost
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>Ghost needs an empty folder for the automated installation script to work. For that purpose, let’s create a subfolder in the <code>ghost</code> user home folder :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">sudo -Hu ghost mkdir /opt/ghost/app
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h1 id="database">Database</h1>
|
||||||
|
|
||||||
|
<p>Ghost requires a MySQL/MariaDB database to store its data (technically, you could use a SQLite database, but please don’t).</p>
|
||||||
|
|
||||||
|
<p>I personnally have all my databases stored on a single LXC container running MariaDB. However, if you need to, you can install MariaDB locally this way :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">apt install mariadb-server mariadb-common
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>We now have to declare a <code>ghost</code> user and database in the MariaDB shell :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-mysql">create database ghost;
|
||||||
|
create user `ghost`@`%` identified by 'password';
|
||||||
|
grant all privileges on ghost.* to 'ghost'@`%`;
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>You can change the <code>%</code> to <code>localhost</code> in the <code>create user</code> command if you’ve installed MariaDB locally. Please also remember to change <code>'password'</code> by an actual password.</p>
|
||||||
|
|
||||||
|
<p>Once that’s done, we’re ready to install Ghost !</p>
|
||||||
|
|
||||||
|
<h1 id="installing-ghost">Installing Ghost</h1>
|
||||||
|
|
||||||
|
<h2 id="ghost-cli">Ghost CLI</h2>
|
||||||
|
|
||||||
|
<p>To install Ghost, we first have to install the Ghost CLI :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">npm i -g ghost-cli
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>The Ghost CLI is a tool that lets you install, upgrade and manage your Ghost installation easily. Its usage is thoroughly documented on the official website <a href="https://docs.ghost.org/v1/docs/ghost-cli">here</a>.</p>
|
||||||
|
|
||||||
|
<h2 id="installing-ghost-1">Installing Ghost</h2>
|
||||||
|
|
||||||
|
<p>Let’s install Ghost :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">cd /opt/ghost/app
|
||||||
|
sudo -Hu ghost ghost install --no-setup-nginx --no-setup-systemd --no-setup-linux-user --no-setup-mysql
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>The command will ask you for the following information :
|
||||||
|
- the URL of your website ;
|
||||||
|
- the hostname or IP of the server that’s hosting your MariaDB installation ;
|
||||||
|
- the username to use to connect to the database (<code>ghost</code>) ;
|
||||||
|
- the password you’ve configured for the database user ;
|
||||||
|
- the database name (<code>ghost</code>).</p>
|
||||||
|
|
||||||
|
<p>Once the script has finished running, you’ve successfully installed Ghost ! However, the daemon won’t start since we haven’t configured systemd yet.</p>
|
||||||
|
|
||||||
|
<p>Since it contains a password, let’s fix the permissions on our installation’s configuration file to make sure it’s not world-readable :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">chmod 600 /opt/ghost/app/config.production.json
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>As you can see from the <code>ghost install</code> command, it can install and configure pretty much all of its dependencies on its own. However, since I’m a <a href="https://xkcd.com/705/"><em>sysadmin</em></a>, that’s not how I roll.</p>
|
||||||
|
|
||||||
|
<h2 id="systemd-configuration">Systemd configuration</h2>
|
||||||
|
|
||||||
|
<p>As I wrote earlier, Ghost runs as a daemon. For us to be able to start it, we now need to declare a systemd unit file :</p>
|
||||||
|
|
||||||
|
<p>Let’s create the file :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">vim /etc/systemd/system/ghost.service
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>And add the following content to it :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-text">[Unit]
|
||||||
|
Description=Ghost systemd service
|
||||||
|
Documentation=https://docs.ghost.org
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
WorkingDirectory=/opt/ghost/app
|
||||||
|
User=ghost
|
||||||
|
Group=ghost
|
||||||
|
Environment="NODE_ENV=production"
|
||||||
|
ExecStart=/usr/bin/ghost run
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>We can now reload systemd an start Ghost :</p>
|
||||||
|
|
||||||
|
<pre><code>systemctl daemon-reload
|
||||||
|
systemctl start ghost.service
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>The daemon should now be running :</p>
|
||||||
|
|
||||||
|
<pre><code>pgrep -alf ghost
|
||||||
|
14184 ghost run
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h1 id="nginx">Nginx</h1>
|
||||||
|
|
||||||
|
<p>With its default configuration, Ghost runs as a webserver on localhost, on a non-standard HTTP port (TCP 2368). For your website to be publicly browseable, you’ll need to configure a webserver as a reverse-proxy in front of your Ghost installation. We’ll use nginx for that purpose.</p>
|
||||||
|
|
||||||
|
<p>If you already have nginx running on a different server from your Ghost installation, you can use it for that purpose. For it to work, you’ll need to edit the server host IP in Ghost’s <code>config.production.json</code> configuration file with your Ghost server public IP and to restart Ghost. If you do so, make sure to limit direct access to your Ghost installation to the IP of your reverse-proxy by using iptables.</p>
|
||||||
|
|
||||||
|
<p>If you need to, you can install nginx locally this way :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">apt install nginx
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>I won’t go into details on how to configure and secure a nginx installation here as it is beyond the scope of this article.</p>
|
||||||
|
|
||||||
|
<p>Here is my nginx configuration for this website :</p>
|
||||||
|
|
||||||
|
<pre><code> location / {
|
||||||
|
proxy_pass http://127.0.0.1:2368;
|
||||||
|
include proxy.conf;
|
||||||
|
add_header Front-End-Https on;
|
||||||
|
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
|
||||||
|
proxy_set_header Authorization "";
|
||||||
|
proxy_set_header Accept-Encoding "";
|
||||||
|
proxy_redirect off;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /ghost/ {
|
||||||
|
proxy_pass http://127.0.0.1:2368/ghost/;
|
||||||
|
allow 192.0.2.100;
|
||||||
|
deny all;
|
||||||
|
include proxy.conf;
|
||||||
|
add_header Front-End-Https on;
|
||||||
|
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
|
||||||
|
proxy_set_header Accept-Encoding "";
|
||||||
|
proxy_redirect off;
|
||||||
|
}
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>As you can see, I’ve declared two location blocks :
|
||||||
|
- <code>/</code> is publicly visible by anyone ;
|
||||||
|
- <code>/ghost</code> (Ghost’s administation interface) is only accessible from 192.0.2.100 (my public IP address).</p>
|
||||||
|
|
||||||
|
<p>I’d rather have left Ghost’s administation interface accessible from anywhere. However, since there is currently no way to replace <code>/ghost</code> by another subfolder and two-factor authentification is not available, I’ve decided against it.</p>
|
||||||
|
|
||||||
|
<h1 id="monit">Monit</h1>
|
||||||
|
|
||||||
|
<p>As I mentionned in previous articles, I have monit running on all of my servers to make sure that my services are running and to restart them should they crash.</p>
|
||||||
|
|
||||||
|
<p>I’ve created a configuration file for Ghost :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">vim /etc/monit/conf.d/ghost
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>With the following content :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-text">check process ghost
|
||||||
|
matching "ghost run"
|
||||||
|
start program = "/bin/systemctl start ghost"
|
||||||
|
stop program = "/bin/systemctl stop ghost"
|
||||||
|
if changed pid then alert
|
||||||
|
if changed ppid then alert
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>Let’s reload monit :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">monit reload
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>Ghost should now appear in your <code>monit summary</code>.</p>
|
||||||
|
|
||||||
|
<h1 id="logging">Logging</h1>
|
||||||
|
|
||||||
|
<p>Ghost writes its logs through <code>syslog</code>. If you don’t want those messages to end up in <code>/var/log/syslog</code>, you’ll have to configure your <code>syslog</code> daemon. For me, that’s <code>syslog-ng</code>.</p>
|
||||||
|
|
||||||
|
<h2 id="syslog-ng">Syslog-ng</h2>
|
||||||
|
|
||||||
|
<p>Let’s create a dedicated folder for the Ghost daemon’s log files :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">mkdir /var/log/ghost
|
||||||
|
chown root:adm /var/log/ghost
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>Then, we need to create a configuration file :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">vim /etc/syslog-ng/conf.d/ghost.conf
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>And add the following content to it :</p>
|
||||||
|
|
||||||
|
<pre><code>filter f_ghost { program ("ghost"); };
|
||||||
|
destination d_ghost { file (/var/log/ghost/ghost.log); };
|
||||||
|
log { source(s_src); filter (f_ghost); destination (d_ghost); flags(final); };
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>We can now reload <code>syslog-ng</code> :</p>
|
||||||
|
|
||||||
|
<pre><code>service syslog-ng reload
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>Once that’s done, Ghost should start logging in <code>/var/log/ghost/ghost.log</code>. Accessing a page on your site will create a new log entry, so that’ll be enough to make sure it’s working properly.</p>
|
||||||
|
|
||||||
|
<h2 id="logrotate">Logrotate</h2>
|
||||||
|
|
||||||
|
<p>As always with logs, let’s configure logrotate to make sure we don’t end up with huge files.</p>
|
||||||
|
|
||||||
|
<p>Let’s create a new logrotate configuration file :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">vim /etc/logrotate.d/ghost
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>And add the following content to it :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-text">/var/log/ghost/ghost.log {
|
||||||
|
rotate 8
|
||||||
|
weekly
|
||||||
|
notifempty
|
||||||
|
missingok
|
||||||
|
create 640 root adm
|
||||||
|
compress
|
||||||
|
copytruncate
|
||||||
|
}
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>There’s no need to reload anything here. This new configuration file will be read by logrotate automatically next time its cron runs.</p>
|
||||||
|
|
||||||
|
<h1 id="conclusion">Conclusion</h1>
|
||||||
|
|
||||||
|
<p>This blog uses a previous version of Ghost’s default theme, <a href="https://github.com/TryGhost/Casper">Casper</a>.</p>
|
||||||
|
|
||||||
|
<p>I’ve modified it a bit, and I really enjoy how it looks now ! You can get the theme with my modifications from my <a href="https://github.com/captainark/Casper">GitHub</a> ! Credits to <a href="http://www.brycematheson.io/fixing-ghosts-default-casper-theme/">this article</a> for some of the changes, and thanks <a href="https://mastodon.fun/@aguay">@Aguay</a> for the help !</p>
|
||||||
|
|
||||||
|
<p>You’ve also probably noticed that I now use a private installation of <a href="https://nodebb.org/">NodeBB</a> for the comments section. I’ll probably write an article on how I’ve installed and implemented it in my Ghost installation in the near future. In the meantime, please feel free to make use of it !</p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="post-footer">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<figure class="author-image">
|
||||||
|
<a class="img" href="https://www.captainark.net/" style="background-image: url(/images/author.jpg)"><span class="hidden">Antoine Joubert's Picture</span></a>
|
||||||
|
</figure>
|
||||||
|
|
||||||
|
|
||||||
|
<section class="author">
|
||||||
|
<h4><a href="https://www.captainark.net/">Antoine Joubert</a></h4>
|
||||||
|
|
||||||
|
<p>Geek | Gamer | TV Shows Aficionado</p>
|
||||||
|
|
||||||
|
<div class="author-meta">
|
||||||
|
<span class="author-location icon-location">Angers, France</span>
|
||||||
|
<span class="author-link icon-link"><a href="https://www.captainark.net">https://www.captainark.net</a></span>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
|
||||||
|
<aside class="read-next">
|
||||||
|
|
||||||
|
<a class="read-next-story" style="no-cover" href="/2016/01/31/private-git-repo/">
|
||||||
|
<section class="post">
|
||||||
|
<h2>Private Git repo</h2>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="read-next-story prev" style="no-cover" href="/2015/05/25/flexget-init-script/">
|
||||||
|
<section class="post">
|
||||||
|
<h2>Flexget init script</h2>
|
||||||
|
</section>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<center>
|
||||||
|
<a class="fa-icons" href="mailto:contact@captainark.net">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-envelope fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://twitter.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://social.captainark.net/users/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-mastodon-alt fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://github.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.last.fm/user/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-lastfm fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://steamcommunity.com/id/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-steam fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.twitch.tv/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitch fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</center>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="site-footer clearfix">
|
||||||
|
<section class="copyright"><a href="">Sysadmining. All day. Every day.</a> © 2015 - 2019</section>
|
||||||
|
|
||||||
|
<section class="poweredby">Proudly generated by <a class="icon-hugo" href="http://gohugo.io">HUGO</a>, with <a class="icon-theme" href="https://github.com/vjeantet/hugo-theme-casper">Casper</a> theme</section>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript" src="/js/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/jquery.fitvids.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/index.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
462
public/2016/01/31/debian-updates-with-ansible/index.html
Normal file
@ -0,0 +1,462 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en-us">
|
||||||
|
<head>
|
||||||
|
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:card" content="summary"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:title" content="Debian updates with Ansible"/>
|
||||||
|
<meta name="twitter:description" content=""/>
|
||||||
|
<meta name="twitter:site" content="@"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:title" content="Debian updates with Ansible · Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:site_name" content="Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:url" content="https://www.captainark.net/2016/01/31/debian-updates-with-ansible/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:image" content="/images/cover.jpg"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:description" content="" />
|
||||||
|
<meta property="og:type" content="article" />
|
||||||
|
<meta property="article:published_time" content="2016-01-31T01:00:00+01:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<title>Debian updates with Ansible · Sysadmining. All day. Every day.</title>
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="description" content="I&rsquo;ve recently bought a HP Proliant Microserver Gen8 to play around with LXC and try new stuff.
|
||||||
|
From the 4 Debian machines I had to keep up-to-date, I now " />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="HandheldFriendly" content="True" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="/images/favicon.ico">
|
||||||
|
<link rel="apple-touch-icon" href="/images/apple-touch-icon.png" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/screen.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/nav.css" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/solarized-light.min.css">
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js"></script>
|
||||||
|
|
||||||
|
<script>hljs.initHighlightingOnLoad();</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link href="/index.xml" rel="alternate" type="application/rss+xml" title="Sysadmining. All day. Every day." />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="generator" content="Hugo 0.53" />
|
||||||
|
|
||||||
|
<link rel="canonical" href="https://www.captainark.net/2016/01/31/debian-updates-with-ansible/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "Article",
|
||||||
|
"publisher": {
|
||||||
|
"@type": "Organization",
|
||||||
|
"name": ,
|
||||||
|
"logo": https://www.captainark.net/images/logo.png
|
||||||
|
},
|
||||||
|
"author": {
|
||||||
|
"@type": "Person",
|
||||||
|
"name": ,
|
||||||
|
|
||||||
|
"image": {
|
||||||
|
"@type": "ImageObject",
|
||||||
|
"url": https://www.captainark.net/images/author.jpg,
|
||||||
|
"width": 250,
|
||||||
|
"height": 250
|
||||||
|
},
|
||||||
|
|
||||||
|
"url": https://www.captainark.net,
|
||||||
|
"sameAs": [
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
],
|
||||||
|
"description": Geek | Gamer | TV Shows Aficionado
|
||||||
|
|
||||||
|
},
|
||||||
|
"headline": Debian updates with Ansible,
|
||||||
|
"name": Debian updates with Ansible,
|
||||||
|
"wordCount": 368,
|
||||||
|
"timeRequired": "PT2M",
|
||||||
|
"inLanguage": {
|
||||||
|
"@type": "Language",
|
||||||
|
"alternateName": en
|
||||||
|
},
|
||||||
|
"url": https://www.captainark.net/2016/01/31/debian-updates-with-ansible/,
|
||||||
|
"datePublished": 2016-01-31T01:00Z,
|
||||||
|
"dateModified": 2016-01-31T01:00Z,
|
||||||
|
|
||||||
|
|
||||||
|
"description": ,
|
||||||
|
"mainEntityOfPage": {
|
||||||
|
"@type": "WebPage",
|
||||||
|
"@id": https://www.captainark.net/2016/01/31/debian-updates-with-ansible/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
(function(f, a, t, h, o, m){
|
||||||
|
a[h]=a[h]||function(){
|
||||||
|
(a[h].q=a[h].q||[]).push(arguments)
|
||||||
|
};
|
||||||
|
o=f.createElement('script'),
|
||||||
|
m=f.getElementsByTagName('script')[0];
|
||||||
|
o.async=1; o.src=t; o.id='fathom-script';
|
||||||
|
m.parentNode.insertBefore(o,m)
|
||||||
|
})(document, window, '//stats.captainark.net/tracker.js', 'fathom');
|
||||||
|
fathom('set', 'siteId', 'GEWGL');
|
||||||
|
fathom('trackPageview');
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.1.5/css/fork-awesome.min.css" integrity="sha256-P64qV9gULPHiZTdrS1nM59toStkgjM0dsf5mK/UwBV4=" crossorigin="anonymous">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body class="nav-closed">
|
||||||
|
|
||||||
|
<div class="nav">
|
||||||
|
<h3 class="nav-title">Menu</h3>
|
||||||
|
<a href="#" class="nav-close">
|
||||||
|
<span class="hidden">Close</span>
|
||||||
|
</a>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h3>This site</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/about">About</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/resume">Resume</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<h3>Other services</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://git.captainark.net">Gitea</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://pics.captainark.net">Chevereto</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://paste.captainark.net">Privatebin</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://chat.captainark.net">Rocket.Chat</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="subscribe-button icon-feed" href="/index.xml">Subscribe</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<span class="nav-cover"></span>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="site-wrapper">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<header class="main-header post-head no-cover">
|
||||||
|
<nav class="main-nav clearfix">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a class="blog-logo" href="https://www.captainark.net/"><img src="/images/logo.png" alt="Home" /></a>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="menu-button" href="#"><span class="burger">☰</span><span class="word">Menu</span></a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<main class="content" role="main">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post post">
|
||||||
|
|
||||||
|
<header class="post-header">
|
||||||
|
<h1 class="post-title">Debian updates with Ansible</h1>
|
||||||
|
<small></small>
|
||||||
|
|
||||||
|
<section class="post-meta">
|
||||||
|
|
||||||
|
<time class="post-date" datetime="2016-01-31T01:00:00+01:00">
|
||||||
|
31 January 2016
|
||||||
|
</time>
|
||||||
|
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<section class="post-content">
|
||||||
|
|
||||||
|
|
||||||
|
<p>I’ve recently bought a <a href="http://www8.hp.com/us/en/products/proliant-servers/product-detail.html?oid=5379860">HP Proliant Microserver Gen8</a> to play around with LXC and try new stuff.</p>
|
||||||
|
|
||||||
|
<p>From the 4 Debian machines I had to keep up-to-date, I now have 7, so it became quite time-consumming to manually SSH to each of them whenever an update became available.</p>
|
||||||
|
|
||||||
|
<p>I ended up looking at <a href="http://www.ansible.com/">Ansible</a> to speed up the process and, within an hour, I had a working playbook that updates the debian packages, pip packages and git repos installed on all of my servers with a single command.</p>
|
||||||
|
|
||||||
|
<p>I figured I’d share the playbook I use to update the Debian packages !</p>
|
||||||
|
|
||||||
|
<h2 id="the-playbook">The playbook</h2>
|
||||||
|
|
||||||
|
<p>I modified <a href="https://gist.github.com/maethor/380676f6b1cec8cc7439">this gist</a> to only use apt-get instead of both apt-get and aptitude.</p>
|
||||||
|
|
||||||
|
<pre><code class="language-yaml">- hosts: all
|
||||||
|
tasks:
|
||||||
|
|
||||||
|
- name: update cache
|
||||||
|
apt: update_cache=yes
|
||||||
|
|
||||||
|
- name: list packages to upgrade (1/2)
|
||||||
|
shell: apt-get upgrade -s -V | awk '/=>/{print $1}'
|
||||||
|
register: updates
|
||||||
|
changed_when: False
|
||||||
|
|
||||||
|
- name: list packages to upgrade (2/2)
|
||||||
|
debug: msg="{{ updates.stdout_lines | count }} packages to upgrade ({{ updates.stdout_lines | join(', ') }})"
|
||||||
|
when: (updates.stdout_lines)
|
||||||
|
|
||||||
|
- name: upgrade packages
|
||||||
|
apt: upgrade=dist
|
||||||
|
when: (updates.stdout_lines)
|
||||||
|
|
||||||
|
- name: check what the new version is
|
||||||
|
shell: lsb_release -r | awk '{print $2}'
|
||||||
|
changed_when: False
|
||||||
|
register: new_release
|
||||||
|
|
||||||
|
- name: notify distribution version upgrade
|
||||||
|
debug: msg="Debian has been upgraded from {{ ansible_lsb.release }} to {{ new_release.stdout }}"
|
||||||
|
when: ansible_lsb.release != new_release.stdout
|
||||||
|
|
||||||
|
- name: /wheezy/ install the debian-goodies package if it is missing
|
||||||
|
apt: name=debian-goodies state=present
|
||||||
|
when: ansible_distribution_release == 'wheezy'
|
||||||
|
|
||||||
|
- name: /jessie/ install the needrestart package if it is missing
|
||||||
|
apt: name=needrestart state=present default_release=jessie-backports
|
||||||
|
when: ansible_distribution_release == 'jessie'
|
||||||
|
|
||||||
|
- name: /wheezy/ list services to restart (1/3)
|
||||||
|
shell: checkrestart | awk '/^service/{print $2}'
|
||||||
|
register: wheezy_services
|
||||||
|
changed_when: False
|
||||||
|
when: ansible_distribution_release == 'wheezy'
|
||||||
|
|
||||||
|
- name: /jessie/ list services to restart (1/3)
|
||||||
|
shell: needrestart -blrl | awk '/^NEEDRESTART-SVC/{print $2}'
|
||||||
|
register: jessie_services
|
||||||
|
changed_when: False
|
||||||
|
when: ansible_distribution_release != 'wheezy'
|
||||||
|
|
||||||
|
- name: merge services list (2/3)
|
||||||
|
set_fact:
|
||||||
|
services: "{{ wheezy_services if ansible_distribution_release == 'wheezy' else jessie_services }}"
|
||||||
|
|
||||||
|
- name: list services to restart (3/3)
|
||||||
|
debug: msg="{{ services.stdout_lines | count }} services to restart ({{ services.stdout_lines | join (', ') }})"
|
||||||
|
when: (services.stdout_lines)
|
||||||
|
|
||||||
|
- name: cache cleanup
|
||||||
|
shell: apt-get autoclean
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h2 id="conclusion">Conclusion</h2>
|
||||||
|
|
||||||
|
<p>That’s all ! Please leave a comment if you’ve found this playbook helpful !</p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="post-footer">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<figure class="author-image">
|
||||||
|
<a class="img" href="https://www.captainark.net/" style="background-image: url(/images/author.jpg)"><span class="hidden">Antoine Joubert's Picture</span></a>
|
||||||
|
</figure>
|
||||||
|
|
||||||
|
|
||||||
|
<section class="author">
|
||||||
|
<h4><a href="https://www.captainark.net/">Antoine Joubert</a></h4>
|
||||||
|
|
||||||
|
<p>Geek | Gamer | TV Shows Aficionado</p>
|
||||||
|
|
||||||
|
<div class="author-meta">
|
||||||
|
<span class="author-location icon-location">Angers, France</span>
|
||||||
|
<span class="author-link icon-link"><a href="https://www.captainark.net">https://www.captainark.net</a></span>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
|
||||||
|
<aside class="read-next">
|
||||||
|
|
||||||
|
<a class="read-next-story" style="no-cover" href="/2016/02/02/my-tmux-configuration/">
|
||||||
|
<section class="post">
|
||||||
|
<h2>My tmux configuration</h2>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="read-next-story prev" style="no-cover" href="/2016/01/31/private-git-repo/">
|
||||||
|
<section class="post">
|
||||||
|
<h2>Private Git repo</h2>
|
||||||
|
</section>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<center>
|
||||||
|
<a class="fa-icons" href="mailto:contact@captainark.net">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-envelope fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://twitter.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://social.captainark.net/users/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-mastodon-alt fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://github.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.last.fm/user/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-lastfm fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://steamcommunity.com/id/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-steam fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.twitch.tv/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitch fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</center>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="site-footer clearfix">
|
||||||
|
<section class="copyright"><a href="">Sysadmining. All day. Every day.</a> © 2015 - 2019</section>
|
||||||
|
|
||||||
|
<section class="poweredby">Proudly generated by <a class="icon-hugo" href="http://gohugo.io">HUGO</a>, with <a class="icon-theme" href="https://github.com/vjeantet/hugo-theme-casper">Casper</a> theme</section>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript" src="/js/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/jquery.fitvids.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/index.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
550
public/2016/01/31/private-git-repo/index.html
Normal file
@ -0,0 +1,550 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en-us">
|
||||||
|
<head>
|
||||||
|
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:card" content="summary"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:title" content="Private Git repo"/>
|
||||||
|
<meta name="twitter:description" content=""/>
|
||||||
|
<meta name="twitter:site" content="@"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:title" content="Private Git repo · Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:site_name" content="Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:url" content="https://www.captainark.net/2016/01/31/private-git-repo/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:image" content="/images/cover.jpg"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:description" content="" />
|
||||||
|
<meta property="og:type" content="article" />
|
||||||
|
<meta property="article:published_time" content="2016-01-31T00:00:00+01:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<title>Private Git repo · Sysadmining. All day. Every day.</title>
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="description" content="I&rsquo;ve decided to migrate this blog to Pelican. I&rsquo;ve been playing around with it over the week-end, and it turns out to be way easier to manage than J" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="HandheldFriendly" content="True" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="/images/favicon.ico">
|
||||||
|
<link rel="apple-touch-icon" href="/images/apple-touch-icon.png" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/screen.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/nav.css" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/solarized-light.min.css">
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js"></script>
|
||||||
|
|
||||||
|
<script>hljs.initHighlightingOnLoad();</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link href="/index.xml" rel="alternate" type="application/rss+xml" title="Sysadmining. All day. Every day." />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="generator" content="Hugo 0.53" />
|
||||||
|
|
||||||
|
<link rel="canonical" href="https://www.captainark.net/2016/01/31/private-git-repo/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "Article",
|
||||||
|
"publisher": {
|
||||||
|
"@type": "Organization",
|
||||||
|
"name": ,
|
||||||
|
"logo": https://www.captainark.net/images/logo.png
|
||||||
|
},
|
||||||
|
"author": {
|
||||||
|
"@type": "Person",
|
||||||
|
"name": ,
|
||||||
|
|
||||||
|
"image": {
|
||||||
|
"@type": "ImageObject",
|
||||||
|
"url": https://www.captainark.net/images/author.jpg,
|
||||||
|
"width": 250,
|
||||||
|
"height": 250
|
||||||
|
},
|
||||||
|
|
||||||
|
"url": https://www.captainark.net,
|
||||||
|
"sameAs": [
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
],
|
||||||
|
"description": Geek | Gamer | TV Shows Aficionado
|
||||||
|
|
||||||
|
},
|
||||||
|
"headline": Private Git repo,
|
||||||
|
"name": Private Git repo,
|
||||||
|
"wordCount": 1174,
|
||||||
|
"timeRequired": "PT6M",
|
||||||
|
"inLanguage": {
|
||||||
|
"@type": "Language",
|
||||||
|
"alternateName": en
|
||||||
|
},
|
||||||
|
"url": https://www.captainark.net/2016/01/31/private-git-repo/,
|
||||||
|
"datePublished": 2016-01-31T00:00Z,
|
||||||
|
"dateModified": 2016-01-31T00:00Z,
|
||||||
|
|
||||||
|
|
||||||
|
"description": ,
|
||||||
|
"mainEntityOfPage": {
|
||||||
|
"@type": "WebPage",
|
||||||
|
"@id": https://www.captainark.net/2016/01/31/private-git-repo/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
(function(f, a, t, h, o, m){
|
||||||
|
a[h]=a[h]||function(){
|
||||||
|
(a[h].q=a[h].q||[]).push(arguments)
|
||||||
|
};
|
||||||
|
o=f.createElement('script'),
|
||||||
|
m=f.getElementsByTagName('script')[0];
|
||||||
|
o.async=1; o.src=t; o.id='fathom-script';
|
||||||
|
m.parentNode.insertBefore(o,m)
|
||||||
|
})(document, window, '//stats.captainark.net/tracker.js', 'fathom');
|
||||||
|
fathom('set', 'siteId', 'GEWGL');
|
||||||
|
fathom('trackPageview');
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.1.5/css/fork-awesome.min.css" integrity="sha256-P64qV9gULPHiZTdrS1nM59toStkgjM0dsf5mK/UwBV4=" crossorigin="anonymous">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body class="nav-closed">
|
||||||
|
|
||||||
|
<div class="nav">
|
||||||
|
<h3 class="nav-title">Menu</h3>
|
||||||
|
<a href="#" class="nav-close">
|
||||||
|
<span class="hidden">Close</span>
|
||||||
|
</a>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h3>This site</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/about">About</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/resume">Resume</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<h3>Other services</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://git.captainark.net">Gitea</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://pics.captainark.net">Chevereto</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://paste.captainark.net">Privatebin</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://chat.captainark.net">Rocket.Chat</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="subscribe-button icon-feed" href="/index.xml">Subscribe</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<span class="nav-cover"></span>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="site-wrapper">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<header class="main-header post-head no-cover">
|
||||||
|
<nav class="main-nav clearfix">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a class="blog-logo" href="https://www.captainark.net/"><img src="/images/logo.png" alt="Home" /></a>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="menu-button" href="#"><span class="burger">☰</span><span class="word">Menu</span></a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<main class="content" role="main">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post post">
|
||||||
|
|
||||||
|
<header class="post-header">
|
||||||
|
<h1 class="post-title">Private Git repo</h1>
|
||||||
|
<small></small>
|
||||||
|
|
||||||
|
<section class="post-meta">
|
||||||
|
|
||||||
|
<time class="post-date" datetime="2016-01-31T00:00:00+01:00">
|
||||||
|
31 January 2016
|
||||||
|
</time>
|
||||||
|
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<section class="post-content">
|
||||||
|
|
||||||
|
|
||||||
|
<p>I’ve decided to migrate this blog to <a href="http://blog.getpelican.com/">Pelican</a>. I’ve been playing around with it over the week-end, and it turns out to be way easier to manage than <a href="https://jekyllrb.com/">Jekyll</a>. Themes are much easier to install and configure, so it ends up looking better as well !</p>
|
||||||
|
|
||||||
|
<p>Since I’m basically recreating this blog from scratch, I’ve decided to delete the old git repo that was hosting it and to create a new one.</p>
|
||||||
|
|
||||||
|
<p>Setting up your own private git repo is pretty easy to achieve and is already well-documented on the <a href="https://git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server">Git</a> website.</p>
|
||||||
|
|
||||||
|
<p>Every time I want to create a new repo, I’ve had time to forget how to do it and I end up looking for that page, so I figured I’d write a few lines on the subject.</p>
|
||||||
|
|
||||||
|
<p>In this tutorial, I’ll configure a git repo on a distant server running Debian 8 (Jessie). This repo will be remotely accessible using SSH. Two users will be able to connect to it : me and the www-data user on my webserver.</p>
|
||||||
|
|
||||||
|
<h2 id="ssh-keys">SSH Keys</h2>
|
||||||
|
|
||||||
|
<p>If you don’t have one already, you’ll need a ssh-key to connect to the git repo.</p>
|
||||||
|
|
||||||
|
<p>On your computer, in a shell, as your usual user :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">ssh-keygen -t rsa -b 3072
|
||||||
|
Generating public/private rsa key pair.
|
||||||
|
Enter file in which to save the key (/home/user/.ssh/id_rsa):
|
||||||
|
Enter passphrase (empty for no passphrase):
|
||||||
|
Enter same passphrase again:
|
||||||
|
Your identification has been saved in /home/user/.ssh/id_rsa.
|
||||||
|
Your public key has been saved in /home/user/id_rsa.pub.
|
||||||
|
The key fingerprint is:
|
||||||
|
[Redacted]
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>For security reasons, configuring a passphrase is recommended. On Mac OS X and most desktop environnements on Linux, you can store this passphrase for the duration of your session using the <code>ssh-add</code> command, so you won’t have to type it every time you want to connect to a host.</p>
|
||||||
|
|
||||||
|
<p>On the server, we also have to create a ssh-key for the user that is running our webserver (you’ll need to have sudo installed) :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">sudo -H -u www-data ssh-keygen -t rsa -b 3072
|
||||||
|
Generating public/private rsa key pair.
|
||||||
|
Enter file in which to save the key (/var/www/.ssh/id_rsa):
|
||||||
|
Enter passphrase (empty for no passphrase):
|
||||||
|
Enter same passphrase again:
|
||||||
|
Your identification has been saved in /var/www/.ssh/id_rsa.
|
||||||
|
Your public key has been saved in /var/www/.ssh/id_rsa.pub.
|
||||||
|
The key fingerprint is:
|
||||||
|
[Redacted]
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>If you decide to configure a passphrase for that ssh-key, you’ll have to type it every time you’ll want to pull from your repo.</p>
|
||||||
|
|
||||||
|
<h2 id="server-management">Server management</h2>
|
||||||
|
|
||||||
|
<p>All of the commands in this section have to be run as root.</p>
|
||||||
|
|
||||||
|
<p>First thing first, we have to install the git package on the server that will be hosting our git repos :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">apt update && apt install git -y
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>Then, we have to create a user named git :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">useradd -s /usr/bin/git-shell -m -r git
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>This will create a system user (UID < 1000) with a /home/git home directory. If you want to host your git repos somewhere else on your filesystem, you should add a <code>-d /home/directory/for/git</code> in the previous command.</p>
|
||||||
|
|
||||||
|
<p>This user will use the git-shell shell. This limits remote connection to that user to git commands (like the rssh shell can limit remote connection to a user to scp or rsync commands).</p>
|
||||||
|
|
||||||
|
<p>We have to configure our system to allow the use of this shell :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">echo '/usr/bin/git-shell' >> /etc/shells
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>From this point, you should have to following output if you try to SSH to your server with that user :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">ssh git@git.captainark.net
|
||||||
|
fatal: Interactive git shell is not enabled.
|
||||||
|
hint: ~/git-shell-commands should exist and have read and execute access.
|
||||||
|
Connection to git@git.captainark.net closed.
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>We now need to create the .ssh/authorized_keys file for the git user with the correct permissions :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">sudo -H -u git mkdir /home/git/.ssh && chmod 700 /home/git/.ssh
|
||||||
|
sudo -H -u git touch /home/git/.ssh/authorized_keys && chmod 600 /home/git/.ssh/authorized_keys
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>You can now copy/paste the content of the two <code>$HOME/.ssh/id_rsa.pub</code> files we’ve created earlier using the <code>ssh-keygen</code> command in <code>/home/git/.ssh/authorized_keys</code>.</p>
|
||||||
|
|
||||||
|
<p>The last thing we have to do is to create our first git repo. In this example, my project will be called ‘captainarkdotnet’ as it will be hosting this blog :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">sudo -H -u git mkdir /home/git/captainarkdotnet.git
|
||||||
|
cd /home/git/captainarkdotnet.git
|
||||||
|
sudo -H -u git git init --bare
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>The last command should give you the following output :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">Initialized empty Git repository in /home/git/captainarkdotnet.git/.git/
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>We’re done with the server configuration. Let’s now actually push stuff to our repo !</p>
|
||||||
|
|
||||||
|
<h3 id="initial-push">Initial push</h3>
|
||||||
|
|
||||||
|
<p>The files for my blog are store in the ~/Documents/projects/captainarkdotnet on my computer. Before doing anything else, we first have to make sure that we currently are in that folder :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">cd ~/Documents/projects/captainarkdotnet
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>Let’s now push the content of that folder to our repo :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">git init
|
||||||
|
git add .
|
||||||
|
git commit -m 'initial commit'
|
||||||
|
git remote add origin git@git.captainark.net:captainarkdotnet.git
|
||||||
|
git push origin master
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>Please note that you’ll need to edit <strong>git.captainark.net</strong> to the FQDN or IP of your git server, and <strong>captainarkdotnet.git</strong> to the name of the git project on your server.</p>
|
||||||
|
|
||||||
|
<p>If everything went well, the last command should give you the following output :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">Counting objects: 69, done.
|
||||||
|
Delta compression using up to 4 threads.
|
||||||
|
Compressing objects: 100% (64/64), done.
|
||||||
|
Writing objects: 100% (69/69), 1.01 MiB | 0 bytes/s, done.
|
||||||
|
Total 69 (delta 15), reused 0 (delta 0)
|
||||||
|
To git@git.captainark.net:captainarkdotnet.git
|
||||||
|
* [new branch] master -> master
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>That’s it, we’ve now pushed our first commit to our server !</p>
|
||||||
|
|
||||||
|
<h2 id="first-pull">First pull</h2>
|
||||||
|
|
||||||
|
<p>Alright, time to pull the files we’ve just pushed on our webserver. I personally store my web content in <code>/var/www</code> ; if you don’t, you’ll have to adjust the path accordingly :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">cd /var/www
|
||||||
|
sudo -H -u www-data git clone git@git.captainark.net:captainarkdotnet.git
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>SSH will ask you to type ‘yes’ since it’s the first time the www-data user connects to the server. If everything goes well, you should have the following output :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">Cloning into 'captainarkdotnet'...
|
||||||
|
remote: Counting objects: 70, done.
|
||||||
|
remote: Compressing objects: 100% (65/65), done.
|
||||||
|
remote: Total 70 (delta 16), reused 0 (delta 0)
|
||||||
|
Receiving objects: 100% (70/70), 1.01 MiB | 0 bytes/s, done.
|
||||||
|
Resolving deltas: 100% (16/16), done.
|
||||||
|
Checking connectivity... done.
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h2 id="conclusion">Conclusion</h2>
|
||||||
|
|
||||||
|
<p>That’s it ! We now have a working private git repo ! I won’t go into details into the git commands in this tutorial, but here’s a quick overwiew of the ones I use the most :</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><code>git add .</code> recursively adds all files from the directory to the repo ;</li>
|
||||||
|
<li><code>git commit -a -m 'This is a comment'</code> commits the current state of your local repo with the ‘This is a comment’ comment ;</li>
|
||||||
|
<li><code>git push</code> pushes your commits to the distant repo ;</li>
|
||||||
|
<li><code>git pull</code> pulls the latest version of the distant repo locally ;</li>
|
||||||
|
<li><code>git branch -av</code> shows all available branches for the repo ;</li>
|
||||||
|
<li><code>git checkout -b testing remotes/origin/testing</code> create a local ‘testing’ branch based on the remote ‘remotes/origin/testing’ branch ;</li>
|
||||||
|
<li>once a branch has been copied locally, you can switch to it with the <code>git checkout {branch}</code> command.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p>For more information on git a command, use <code>man git-{command}</code> !</p>
|
||||||
|
|
||||||
|
<p>If you’ve found this tutorial in any way helpful, please feel free to leave a comment !</p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="post-footer">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<figure class="author-image">
|
||||||
|
<a class="img" href="https://www.captainark.net/" style="background-image: url(/images/author.jpg)"><span class="hidden">Antoine Joubert's Picture</span></a>
|
||||||
|
</figure>
|
||||||
|
|
||||||
|
|
||||||
|
<section class="author">
|
||||||
|
<h4><a href="https://www.captainark.net/">Antoine Joubert</a></h4>
|
||||||
|
|
||||||
|
<p>Geek | Gamer | TV Shows Aficionado</p>
|
||||||
|
|
||||||
|
<div class="author-meta">
|
||||||
|
<span class="author-location icon-location">Angers, France</span>
|
||||||
|
<span class="author-link icon-link"><a href="https://www.captainark.net">https://www.captainark.net</a></span>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
|
||||||
|
<aside class="read-next">
|
||||||
|
|
||||||
|
<a class="read-next-story" style="no-cover" href="/2016/01/31/debian-updates-with-ansible/">
|
||||||
|
<section class="post">
|
||||||
|
<h2>Debian updates with Ansible</h2>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="read-next-story prev" style="no-cover" href="/2015/11/19/installing-ghost/">
|
||||||
|
<section class="post">
|
||||||
|
<h2>Installing Ghost</h2>
|
||||||
|
</section>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<center>
|
||||||
|
<a class="fa-icons" href="mailto:contact@captainark.net">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-envelope fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://twitter.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://social.captainark.net/users/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-mastodon-alt fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://github.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.last.fm/user/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-lastfm fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://steamcommunity.com/id/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-steam fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.twitch.tv/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitch fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</center>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="site-footer clearfix">
|
||||||
|
<section class="copyright"><a href="">Sysadmining. All day. Every day.</a> © 2015 - 2019</section>
|
||||||
|
|
||||||
|
<section class="poweredby">Proudly generated by <a class="icon-hugo" href="http://gohugo.io">HUGO</a>, with <a class="icon-theme" href="https://github.com/vjeantet/hugo-theme-casper">Casper</a> theme</section>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript" src="/js/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/jquery.fitvids.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/index.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
568
public/2016/02/02/my-tmux-configuration/index.html
Normal file
@ -0,0 +1,568 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en-us">
|
||||||
|
<head>
|
||||||
|
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:card" content="summary"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:title" content="My tmux configuration"/>
|
||||||
|
<meta name="twitter:description" content=""/>
|
||||||
|
<meta name="twitter:site" content="@"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:title" content="My tmux configuration · Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:site_name" content="Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:url" content="https://www.captainark.net/2016/02/02/my-tmux-configuration/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:image" content="/images/cover.jpg"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:description" content="" />
|
||||||
|
<meta property="og:type" content="article" />
|
||||||
|
<meta property="article:published_time" content="2016-02-02T00:00:00+01:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<title>My tmux configuration · Sysadmining. All day. Every day.</title>
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="description" content="tmux is a terminal mutiplexer. It lets you have multiples shells running in a single terminal emulator window and it keeps those shells running in the backgroun" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="HandheldFriendly" content="True" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="/images/favicon.ico">
|
||||||
|
<link rel="apple-touch-icon" href="/images/apple-touch-icon.png" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/screen.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/nav.css" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/solarized-light.min.css">
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js"></script>
|
||||||
|
|
||||||
|
<script>hljs.initHighlightingOnLoad();</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link href="/index.xml" rel="alternate" type="application/rss+xml" title="Sysadmining. All day. Every day." />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="generator" content="Hugo 0.53" />
|
||||||
|
|
||||||
|
<link rel="canonical" href="https://www.captainark.net/2016/02/02/my-tmux-configuration/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "Article",
|
||||||
|
"publisher": {
|
||||||
|
"@type": "Organization",
|
||||||
|
"name": ,
|
||||||
|
"logo": https://www.captainark.net/images/logo.png
|
||||||
|
},
|
||||||
|
"author": {
|
||||||
|
"@type": "Person",
|
||||||
|
"name": ,
|
||||||
|
|
||||||
|
"image": {
|
||||||
|
"@type": "ImageObject",
|
||||||
|
"url": https://www.captainark.net/images/author.jpg,
|
||||||
|
"width": 250,
|
||||||
|
"height": 250
|
||||||
|
},
|
||||||
|
|
||||||
|
"url": https://www.captainark.net,
|
||||||
|
"sameAs": [
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
],
|
||||||
|
"description": Geek | Gamer | TV Shows Aficionado
|
||||||
|
|
||||||
|
},
|
||||||
|
"headline": My tmux configuration,
|
||||||
|
"name": My tmux configuration,
|
||||||
|
"wordCount": 708,
|
||||||
|
"timeRequired": "PT4M",
|
||||||
|
"inLanguage": {
|
||||||
|
"@type": "Language",
|
||||||
|
"alternateName": en
|
||||||
|
},
|
||||||
|
"url": https://www.captainark.net/2016/02/02/my-tmux-configuration/,
|
||||||
|
"datePublished": 2016-02-02T00:00Z,
|
||||||
|
"dateModified": 2016-02-02T00:00Z,
|
||||||
|
|
||||||
|
|
||||||
|
"description": ,
|
||||||
|
"mainEntityOfPage": {
|
||||||
|
"@type": "WebPage",
|
||||||
|
"@id": https://www.captainark.net/2016/02/02/my-tmux-configuration/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
(function(f, a, t, h, o, m){
|
||||||
|
a[h]=a[h]||function(){
|
||||||
|
(a[h].q=a[h].q||[]).push(arguments)
|
||||||
|
};
|
||||||
|
o=f.createElement('script'),
|
||||||
|
m=f.getElementsByTagName('script')[0];
|
||||||
|
o.async=1; o.src=t; o.id='fathom-script';
|
||||||
|
m.parentNode.insertBefore(o,m)
|
||||||
|
})(document, window, '//stats.captainark.net/tracker.js', 'fathom');
|
||||||
|
fathom('set', 'siteId', 'GEWGL');
|
||||||
|
fathom('trackPageview');
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.1.5/css/fork-awesome.min.css" integrity="sha256-P64qV9gULPHiZTdrS1nM59toStkgjM0dsf5mK/UwBV4=" crossorigin="anonymous">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body class="nav-closed">
|
||||||
|
|
||||||
|
<div class="nav">
|
||||||
|
<h3 class="nav-title">Menu</h3>
|
||||||
|
<a href="#" class="nav-close">
|
||||||
|
<span class="hidden">Close</span>
|
||||||
|
</a>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h3>This site</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/about">About</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/resume">Resume</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<h3>Other services</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://git.captainark.net">Gitea</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://pics.captainark.net">Chevereto</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://paste.captainark.net">Privatebin</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://chat.captainark.net">Rocket.Chat</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="subscribe-button icon-feed" href="/index.xml">Subscribe</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<span class="nav-cover"></span>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="site-wrapper">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<header class="main-header post-head no-cover">
|
||||||
|
<nav class="main-nav clearfix">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a class="blog-logo" href="https://www.captainark.net/"><img src="/images/logo.png" alt="Home" /></a>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="menu-button" href="#"><span class="burger">☰</span><span class="word">Menu</span></a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<main class="content" role="main">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post post">
|
||||||
|
|
||||||
|
<header class="post-header">
|
||||||
|
<h1 class="post-title">My tmux configuration</h1>
|
||||||
|
<small></small>
|
||||||
|
|
||||||
|
<section class="post-meta">
|
||||||
|
|
||||||
|
<time class="post-date" datetime="2016-02-02T00:00:00+01:00">
|
||||||
|
02 February 2016
|
||||||
|
</time>
|
||||||
|
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<section class="post-content">
|
||||||
|
|
||||||
|
|
||||||
|
<p><a href="https://tmux.github.io/">tmux</a> is a terminal mutiplexer. It lets you have multiples shells running in a single terminal emulator window and it keeps those shells running in the background should you need to close your terminal emulator.</p>
|
||||||
|
|
||||||
|
<p>I’ve played around with the configuration quite a bit to find settings that suit my needs. Here’s what it ended up looking like :</p>
|
||||||
|
|
||||||
|
<p><img src="/images/tmux.png" alt="tmux_fullsize" /></p>
|
||||||
|
|
||||||
|
<p>This screenshot was done on Mac OS X, using the Terminal app and this <a href="https://github.com/tomislav/osx-terminal.app-colors-solarized">Solarized theme</a>.</p>
|
||||||
|
|
||||||
|
<p>I figured I’d share my tmux configuration here !</p>
|
||||||
|
|
||||||
|
<h2 id="installing-tmux">Installing tmux</h2>
|
||||||
|
|
||||||
|
<p>tmux is available on Debian. I suggest using the <a href="https://packages.debian.org/jessie-backports/tmux">jessie backports</a> version :</p>
|
||||||
|
|
||||||
|
<p><code>apt -t jessie-backports install tmux</code></p>
|
||||||
|
|
||||||
|
<p>tmux is also available on Mac OS X using <a href="http://brew.sh/">brew</a> :</p>
|
||||||
|
|
||||||
|
<p><code>brew install tmux</code></p>
|
||||||
|
|
||||||
|
<h2 id="tmux-conf">tmux.conf</h2>
|
||||||
|
|
||||||
|
<p>I used screen before tmux, so I configured the prefix key on C-a instead of C-b. tmux has the advantage of being <em>much</em> simpler to configure than screen.</p>
|
||||||
|
|
||||||
|
<p>If you want to use this configuration, simply copy the following in ~/.tmux.conf. This file is read by default when tmux starts.</p>
|
||||||
|
|
||||||
|
<p>If you simply want to try it out, copy it in a file somewhere else and have tmux load with the -f parameter (<code>tmux -f ~/tmux-test.conf</code>).</p>
|
||||||
|
|
||||||
|
<pre><code># use utf8
|
||||||
|
set -g utf8
|
||||||
|
set-option -g status-utf8 on
|
||||||
|
set-window-option -g utf8 on
|
||||||
|
|
||||||
|
# do not wait on esc key
|
||||||
|
set-option -g escape-time 0
|
||||||
|
|
||||||
|
# completely disable automatic rename
|
||||||
|
set-window-option -g automatic-rename off
|
||||||
|
|
||||||
|
# basic settings
|
||||||
|
set -g default-terminal "screen-256color"
|
||||||
|
set -g aggressive-resize off
|
||||||
|
set-window-option -g xterm-keys on
|
||||||
|
#set-window-option -g mode-mouse off
|
||||||
|
|
||||||
|
# command history
|
||||||
|
set -g history-limit 10000
|
||||||
|
|
||||||
|
# messages
|
||||||
|
set -g message-bg default
|
||||||
|
set -g message-fg red
|
||||||
|
|
||||||
|
# no visual activity
|
||||||
|
set -g visual-activity off
|
||||||
|
set -g visual-bell off
|
||||||
|
|
||||||
|
# status bar
|
||||||
|
set-option -g status-justify centre
|
||||||
|
set-option -g status-bg default
|
||||||
|
set-option -g status-fg blue
|
||||||
|
set-option -g status-interval 5
|
||||||
|
set-option -g status-left-length 30
|
||||||
|
set-option -g status-left '#[fg=red][ #[fg=white]#H #[fg=red]]#[default]'
|
||||||
|
set-option -g status-right '#[fg=red][ #[fg=white]%R %d/%m #[fg=red]]#[default]'
|
||||||
|
|
||||||
|
# modes
|
||||||
|
set-option -g mode-bg default
|
||||||
|
set-option -g mode-fg blue
|
||||||
|
|
||||||
|
# inactive window format
|
||||||
|
set-window-option -g window-status-format '#I:#W#F'
|
||||||
|
set-window-option -g monitor-activity on
|
||||||
|
#set-window-option -g monitor-content on # not available in tmux 2.0
|
||||||
|
|
||||||
|
# activity in a window
|
||||||
|
set-window-option -g window-status-activity-attr dim
|
||||||
|
set-window-option -g window-status-activity-bg default
|
||||||
|
set-window-option -g window-status-activity-fg yellow
|
||||||
|
|
||||||
|
# content in a window # not available in tmux 2.0
|
||||||
|
#set-window-option -g window-status-content-attr dim
|
||||||
|
#set-window-option -g window-status-content-bg default
|
||||||
|
#set-window-option -g window-status-content-fg red
|
||||||
|
|
||||||
|
# active window format
|
||||||
|
set-window-option -g window-status-current-fg white
|
||||||
|
set-window-option -g window-status-current-bg default
|
||||||
|
set-window-option -g window-status-current-format '#[fg=red](#[default]#I:#W#F#[fg=red])#[default]'
|
||||||
|
|
||||||
|
# reload tmux configuration
|
||||||
|
unbind r
|
||||||
|
bind r source-file ~/.tmux.conf \; display "Configuration reloaded!"
|
||||||
|
|
||||||
|
# Screen-like keybinds
|
||||||
|
unbind C-b
|
||||||
|
set -g prefix ^A
|
||||||
|
set -g prefix2 ^Q
|
||||||
|
bind a send-prefix
|
||||||
|
bind q send-prefix
|
||||||
|
|
||||||
|
unbind c
|
||||||
|
bind c new-window
|
||||||
|
unbind ^C
|
||||||
|
bind ^C new-window
|
||||||
|
|
||||||
|
unbind n
|
||||||
|
bind n next-window
|
||||||
|
unbind ^N
|
||||||
|
bind ^N next-window
|
||||||
|
|
||||||
|
unbind A
|
||||||
|
bind A command-prompt "rename-window %%"
|
||||||
|
|
||||||
|
unbind p
|
||||||
|
bind p previous-window
|
||||||
|
unbind ^P
|
||||||
|
bind ^P previous-window
|
||||||
|
|
||||||
|
unbind a
|
||||||
|
bind a last-window
|
||||||
|
unbind ^A
|
||||||
|
bind ^A last-window
|
||||||
|
|
||||||
|
unbind [
|
||||||
|
bind Escape copy-mode
|
||||||
|
|
||||||
|
unbind w
|
||||||
|
bind w list-windows
|
||||||
|
|
||||||
|
unbind k
|
||||||
|
bind k confirm-before "kill-window"
|
||||||
|
|
||||||
|
unbind l
|
||||||
|
bind l refresh-client
|
||||||
|
|
||||||
|
unbind '"'
|
||||||
|
bind '"' choose-window
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h2 id="aliases">Aliases</h2>
|
||||||
|
|
||||||
|
<p>I also use two functions with tmux (in ~/.bash_aliases).</p>
|
||||||
|
|
||||||
|
<p>The first one creates a new “mytmux” tmux session if one doesn’t exist yet, opens 10 shells and selects the first one.</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">mytmux() {
|
||||||
|
tmux has-session -t mytmux
|
||||||
|
if [ $? != 0 ]; then
|
||||||
|
tmux new-session -s mytmux -n $(hostname) -d
|
||||||
|
tmux new-window -t mytmux:1 -n $(hostname)
|
||||||
|
tmux new-window -t mytmux:2 -n $(hostname)
|
||||||
|
tmux new-window -t mytmux:3 -n $(hostname)
|
||||||
|
tmux new-window -t mytmux:4 -n $(hostname)
|
||||||
|
tmux new-window -t mytmux:5 -n $(hostname)
|
||||||
|
tmux new-window -t mytmux:6 -n $(hostname)
|
||||||
|
tmux new-window -t mytmux:7 -n $(hostname)
|
||||||
|
tmux new-window -t mytmux:8 -n $(hostname)
|
||||||
|
tmux new-window -t mytmux:9 -n $(hostname)
|
||||||
|
tmux select-window -t mytmux:0
|
||||||
|
fi
|
||||||
|
tmux attach -t mytmux
|
||||||
|
}
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>The second one changes the tmux window name whenever I ssh to a remote host, and switches the window name back to the name of my computer when I logout from the host.</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">if [ -n "$TMUX" ]; then
|
||||||
|
ssh() {
|
||||||
|
if [ $# -le 2 ]; then
|
||||||
|
tmux rename-window "${@: -1}"
|
||||||
|
command ssh "$@"
|
||||||
|
tmux rename-window "$(hostname)"
|
||||||
|
else
|
||||||
|
command ssh "$@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h2 id="conclusion">Conclusion</h2>
|
||||||
|
|
||||||
|
<p>That’s all ! As always, please do leave a comment if you’ve found something useful in this article !</p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="post-footer">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<figure class="author-image">
|
||||||
|
<a class="img" href="https://www.captainark.net/" style="background-image: url(/images/author.jpg)"><span class="hidden">Antoine Joubert's Picture</span></a>
|
||||||
|
</figure>
|
||||||
|
|
||||||
|
|
||||||
|
<section class="author">
|
||||||
|
<h4><a href="https://www.captainark.net/">Antoine Joubert</a></h4>
|
||||||
|
|
||||||
|
<p>Geek | Gamer | TV Shows Aficionado</p>
|
||||||
|
|
||||||
|
<div class="author-meta">
|
||||||
|
<span class="author-location icon-location">Angers, France</span>
|
||||||
|
<span class="author-link icon-link"><a href="https://www.captainark.net">https://www.captainark.net</a></span>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
|
||||||
|
<aside class="read-next">
|
||||||
|
|
||||||
|
<a class="read-next-story" style="no-cover" href="/2016/03/13/mysql-backup-script/">
|
||||||
|
<section class="post">
|
||||||
|
<h2>MySQL backup script</h2>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="read-next-story prev" style="no-cover" href="/2016/01/31/debian-updates-with-ansible/">
|
||||||
|
<section class="post">
|
||||||
|
<h2>Debian updates with Ansible</h2>
|
||||||
|
</section>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<center>
|
||||||
|
<a class="fa-icons" href="mailto:contact@captainark.net">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-envelope fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://twitter.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://social.captainark.net/users/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-mastodon-alt fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://github.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.last.fm/user/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-lastfm fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://steamcommunity.com/id/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-steam fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.twitch.tv/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitch fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</center>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="site-footer clearfix">
|
||||||
|
<section class="copyright"><a href="">Sysadmining. All day. Every day.</a> © 2015 - 2019</section>
|
||||||
|
|
||||||
|
<section class="poweredby">Proudly generated by <a class="icon-hugo" href="http://gohugo.io">HUGO</a>, with <a class="icon-theme" href="https://github.com/vjeantet/hugo-theme-casper">Casper</a> theme</section>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript" src="/js/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/jquery.fitvids.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/index.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
431
public/2016/03/13/mysql-backup-script/index.html
Normal file
@ -0,0 +1,431 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en-us">
|
||||||
|
<head>
|
||||||
|
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:card" content="summary"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:title" content="MySQL backup script"/>
|
||||||
|
<meta name="twitter:description" content=""/>
|
||||||
|
<meta name="twitter:site" content="@"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:title" content="MySQL backup script · Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:site_name" content="Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:url" content="https://www.captainark.net/2016/03/13/mysql-backup-script/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:image" content="/images/cover.jpg"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:description" content="" />
|
||||||
|
<meta property="og:type" content="article" />
|
||||||
|
<meta property="article:published_time" content="2016-03-13T00:00:00+01:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<title>MySQL backup script · Sysadmining. All day. Every day.</title>
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="description" content="I wrote a MySQL database backup script a while back. I known they are more than enough of them already floating around the internet, but hey, I figured I&rsquo;" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="HandheldFriendly" content="True" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="/images/favicon.ico">
|
||||||
|
<link rel="apple-touch-icon" href="/images/apple-touch-icon.png" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/screen.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/nav.css" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/solarized-light.min.css">
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js"></script>
|
||||||
|
|
||||||
|
<script>hljs.initHighlightingOnLoad();</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link href="/index.xml" rel="alternate" type="application/rss+xml" title="Sysadmining. All day. Every day." />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="generator" content="Hugo 0.53" />
|
||||||
|
|
||||||
|
<link rel="canonical" href="https://www.captainark.net/2016/03/13/mysql-backup-script/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "Article",
|
||||||
|
"publisher": {
|
||||||
|
"@type": "Organization",
|
||||||
|
"name": ,
|
||||||
|
"logo": https://www.captainark.net/images/logo.png
|
||||||
|
},
|
||||||
|
"author": {
|
||||||
|
"@type": "Person",
|
||||||
|
"name": ,
|
||||||
|
|
||||||
|
"image": {
|
||||||
|
"@type": "ImageObject",
|
||||||
|
"url": https://www.captainark.net/images/author.jpg,
|
||||||
|
"width": 250,
|
||||||
|
"height": 250
|
||||||
|
},
|
||||||
|
|
||||||
|
"url": https://www.captainark.net,
|
||||||
|
"sameAs": [
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
],
|
||||||
|
"description": Geek | Gamer | TV Shows Aficionado
|
||||||
|
|
||||||
|
},
|
||||||
|
"headline": MySQL backup script,
|
||||||
|
"name": MySQL backup script,
|
||||||
|
"wordCount": 244,
|
||||||
|
"timeRequired": "PT2M",
|
||||||
|
"inLanguage": {
|
||||||
|
"@type": "Language",
|
||||||
|
"alternateName": en
|
||||||
|
},
|
||||||
|
"url": https://www.captainark.net/2016/03/13/mysql-backup-script/,
|
||||||
|
"datePublished": 2016-03-13T00:00Z,
|
||||||
|
"dateModified": 2016-03-13T00:00Z,
|
||||||
|
|
||||||
|
|
||||||
|
"description": ,
|
||||||
|
"mainEntityOfPage": {
|
||||||
|
"@type": "WebPage",
|
||||||
|
"@id": https://www.captainark.net/2016/03/13/mysql-backup-script/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
(function(f, a, t, h, o, m){
|
||||||
|
a[h]=a[h]||function(){
|
||||||
|
(a[h].q=a[h].q||[]).push(arguments)
|
||||||
|
};
|
||||||
|
o=f.createElement('script'),
|
||||||
|
m=f.getElementsByTagName('script')[0];
|
||||||
|
o.async=1; o.src=t; o.id='fathom-script';
|
||||||
|
m.parentNode.insertBefore(o,m)
|
||||||
|
})(document, window, '//stats.captainark.net/tracker.js', 'fathom');
|
||||||
|
fathom('set', 'siteId', 'GEWGL');
|
||||||
|
fathom('trackPageview');
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.1.5/css/fork-awesome.min.css" integrity="sha256-P64qV9gULPHiZTdrS1nM59toStkgjM0dsf5mK/UwBV4=" crossorigin="anonymous">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body class="nav-closed">
|
||||||
|
|
||||||
|
<div class="nav">
|
||||||
|
<h3 class="nav-title">Menu</h3>
|
||||||
|
<a href="#" class="nav-close">
|
||||||
|
<span class="hidden">Close</span>
|
||||||
|
</a>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h3>This site</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/about">About</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/resume">Resume</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<h3>Other services</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://git.captainark.net">Gitea</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://pics.captainark.net">Chevereto</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://paste.captainark.net">Privatebin</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://chat.captainark.net">Rocket.Chat</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="subscribe-button icon-feed" href="/index.xml">Subscribe</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<span class="nav-cover"></span>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="site-wrapper">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<header class="main-header post-head no-cover">
|
||||||
|
<nav class="main-nav clearfix">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a class="blog-logo" href="https://www.captainark.net/"><img src="/images/logo.png" alt="Home" /></a>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="menu-button" href="#"><span class="burger">☰</span><span class="word">Menu</span></a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<main class="content" role="main">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post post">
|
||||||
|
|
||||||
|
<header class="post-header">
|
||||||
|
<h1 class="post-title">MySQL backup script</h1>
|
||||||
|
<small></small>
|
||||||
|
|
||||||
|
<section class="post-meta">
|
||||||
|
|
||||||
|
<time class="post-date" datetime="2016-03-13T00:00:00+01:00">
|
||||||
|
13 March 2016
|
||||||
|
</time>
|
||||||
|
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<section class="post-content">
|
||||||
|
|
||||||
|
|
||||||
|
<p>I wrote a MySQL database backup script a while back. I known they are more than enough of them already floating around the internet, but hey, I figured I’d share it here anyway.</p>
|
||||||
|
|
||||||
|
<h2 id="the-script">The script</h2>
|
||||||
|
|
||||||
|
<p>For the script to work, you’ll need to edit a few variable to match your configuration.</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><code>BACKUPDIR</code> is the path of the directory where you want your backups to be stored.</li>
|
||||||
|
<li><code>BACKUPUSR</code> is the user that will connect to MySQL to dump the databases. It should have access to all you databases without needing a password.</li>
|
||||||
|
<li><code>EXCLUDELIST</code> is a list of databases that should not be backed-up. Leaving it as is is probably fine.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">#!/bin/bash
|
||||||
|
|
||||||
|
BACKUPDIR="/home/user/backup"
|
||||||
|
BACKUPUSR="user"
|
||||||
|
EXCLUDELIST="^Databases$|^information_schema$|^mysql$|^performance_schema$"
|
||||||
|
|
||||||
|
sqlbk() {
|
||||||
|
for each in $(mysqlshow | awk '/[[:alnum:]]/{print $2}'); do
|
||||||
|
if [[ $each =~ $EXCLUDELIST ]]; then
|
||||||
|
true
|
||||||
|
else
|
||||||
|
mysqldump $each | bzip2 > ${BACKUPDIR}/${each}.sql.bz2
|
||||||
|
chown ${BACKUPUSR}: ${BACKUPDIR}/${each}.sql.bz2 && chmod 600 ${BACKUPDIR}/${each}.sql.bz2
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
[[ -e /etc/init.d/mysql ]] && sqlbk
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>I personnaly have this script running once a week, in my user’s personnal crontab (editable using the <code>crontab -e</code> command) :</p>
|
||||||
|
|
||||||
|
<pre><code>## WEEKLY DATABASE BACKUP
|
||||||
|
@weekly /home/user/bin/backupdb
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h1 id="conclusion">Conclusion</h1>
|
||||||
|
|
||||||
|
<p>You’ve probably noticed that the script erases the previous backup when a new one is made.</p>
|
||||||
|
|
||||||
|
<p>I don’t need to keep multiple versions of the same database backup on my servers because they are all saved remotely on a daily basis using <a href="http://rsnapshot.org/">Rsnapshot</a>. I’ll probably write an article on the subject in the future.</p>
|
||||||
|
|
||||||
|
<p>As usual, feedback is always appreciated !</p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="post-footer">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<figure class="author-image">
|
||||||
|
<a class="img" href="https://www.captainark.net/" style="background-image: url(/images/author.jpg)"><span class="hidden">Antoine Joubert's Picture</span></a>
|
||||||
|
</figure>
|
||||||
|
|
||||||
|
|
||||||
|
<section class="author">
|
||||||
|
<h4><a href="https://www.captainark.net/">Antoine Joubert</a></h4>
|
||||||
|
|
||||||
|
<p>Geek | Gamer | TV Shows Aficionado</p>
|
||||||
|
|
||||||
|
<div class="author-meta">
|
||||||
|
<span class="author-location icon-location">Angers, France</span>
|
||||||
|
<span class="author-link icon-link"><a href="https://www.captainark.net">https://www.captainark.net</a></span>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
|
||||||
|
<aside class="read-next">
|
||||||
|
|
||||||
|
<a class="read-next-story" style="no-cover" href="/2016/03/26/webdav-with-nginx/">
|
||||||
|
<section class="post">
|
||||||
|
<h2>WebDAV with nginx</h2>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="read-next-story prev" style="no-cover" href="/2016/02/02/my-tmux-configuration/">
|
||||||
|
<section class="post">
|
||||||
|
<h2>My tmux configuration</h2>
|
||||||
|
</section>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<center>
|
||||||
|
<a class="fa-icons" href="mailto:contact@captainark.net">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-envelope fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://twitter.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://social.captainark.net/users/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-mastodon-alt fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://github.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.last.fm/user/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-lastfm fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://steamcommunity.com/id/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-steam fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.twitch.tv/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitch fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</center>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="site-footer clearfix">
|
||||||
|
<section class="copyright"><a href="">Sysadmining. All day. Every day.</a> © 2015 - 2019</section>
|
||||||
|
|
||||||
|
<section class="poweredby">Proudly generated by <a class="icon-hugo" href="http://gohugo.io">HUGO</a>, with <a class="icon-theme" href="https://github.com/vjeantet/hugo-theme-casper">Casper</a> theme</section>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript" src="/js/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/jquery.fitvids.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/index.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
713
public/2016/03/26/webdav-with-nginx/index.html
Normal file
@ -0,0 +1,713 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en-us">
|
||||||
|
<head>
|
||||||
|
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:card" content="summary"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:title" content="WebDAV with nginx"/>
|
||||||
|
<meta name="twitter:description" content=""/>
|
||||||
|
<meta name="twitter:site" content="@"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:title" content="WebDAV with nginx · Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:site_name" content="Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:url" content="https://www.captainark.net/2016/03/26/webdav-with-nginx/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:image" content="/images/cover.jpg"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:description" content="" />
|
||||||
|
<meta property="og:type" content="article" />
|
||||||
|
<meta property="article:published_time" content="2016-03-26T00:00:00+01:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<title>WebDAV with nginx · Sysadmining. All day. Every day.</title>
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="description" content="This website has been hosted on an Online.net dedicated server since its creation. I&rsquo;ve been one of their customers for the past 3 years now, and I still " />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="HandheldFriendly" content="True" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="/images/favicon.ico">
|
||||||
|
<link rel="apple-touch-icon" href="/images/apple-touch-icon.png" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/screen.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/nav.css" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/solarized-light.min.css">
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js"></script>
|
||||||
|
|
||||||
|
<script>hljs.initHighlightingOnLoad();</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link href="/index.xml" rel="alternate" type="application/rss+xml" title="Sysadmining. All day. Every day." />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="generator" content="Hugo 0.53" />
|
||||||
|
|
||||||
|
<link rel="canonical" href="https://www.captainark.net/2016/03/26/webdav-with-nginx/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "Article",
|
||||||
|
"publisher": {
|
||||||
|
"@type": "Organization",
|
||||||
|
"name": ,
|
||||||
|
"logo": https://www.captainark.net/images/logo.png
|
||||||
|
},
|
||||||
|
"author": {
|
||||||
|
"@type": "Person",
|
||||||
|
"name": ,
|
||||||
|
|
||||||
|
"image": {
|
||||||
|
"@type": "ImageObject",
|
||||||
|
"url": https://www.captainark.net/images/author.jpg,
|
||||||
|
"width": 250,
|
||||||
|
"height": 250
|
||||||
|
},
|
||||||
|
|
||||||
|
"url": https://www.captainark.net,
|
||||||
|
"sameAs": [
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
],
|
||||||
|
"description": Geek | Gamer | TV Shows Aficionado
|
||||||
|
|
||||||
|
},
|
||||||
|
"headline": WebDAV with nginx,
|
||||||
|
"name": WebDAV with nginx,
|
||||||
|
"wordCount": 1419,
|
||||||
|
"timeRequired": "PT7M",
|
||||||
|
"inLanguage": {
|
||||||
|
"@type": "Language",
|
||||||
|
"alternateName": en
|
||||||
|
},
|
||||||
|
"url": https://www.captainark.net/2016/03/26/webdav-with-nginx/,
|
||||||
|
"datePublished": 2016-03-26T00:00Z,
|
||||||
|
"dateModified": 2016-03-26T00:00Z,
|
||||||
|
|
||||||
|
|
||||||
|
"description": ,
|
||||||
|
"mainEntityOfPage": {
|
||||||
|
"@type": "WebPage",
|
||||||
|
"@id": https://www.captainark.net/2016/03/26/webdav-with-nginx/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
(function(f, a, t, h, o, m){
|
||||||
|
a[h]=a[h]||function(){
|
||||||
|
(a[h].q=a[h].q||[]).push(arguments)
|
||||||
|
};
|
||||||
|
o=f.createElement('script'),
|
||||||
|
m=f.getElementsByTagName('script')[0];
|
||||||
|
o.async=1; o.src=t; o.id='fathom-script';
|
||||||
|
m.parentNode.insertBefore(o,m)
|
||||||
|
})(document, window, '//stats.captainark.net/tracker.js', 'fathom');
|
||||||
|
fathom('set', 'siteId', 'GEWGL');
|
||||||
|
fathom('trackPageview');
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.1.5/css/fork-awesome.min.css" integrity="sha256-P64qV9gULPHiZTdrS1nM59toStkgjM0dsf5mK/UwBV4=" crossorigin="anonymous">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body class="nav-closed">
|
||||||
|
|
||||||
|
<div class="nav">
|
||||||
|
<h3 class="nav-title">Menu</h3>
|
||||||
|
<a href="#" class="nav-close">
|
||||||
|
<span class="hidden">Close</span>
|
||||||
|
</a>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h3>This site</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/about">About</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/resume">Resume</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<h3>Other services</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://git.captainark.net">Gitea</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://pics.captainark.net">Chevereto</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://paste.captainark.net">Privatebin</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://chat.captainark.net">Rocket.Chat</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="subscribe-button icon-feed" href="/index.xml">Subscribe</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<span class="nav-cover"></span>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="site-wrapper">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<header class="main-header post-head no-cover">
|
||||||
|
<nav class="main-nav clearfix">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a class="blog-logo" href="https://www.captainark.net/"><img src="/images/logo.png" alt="Home" /></a>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="menu-button" href="#"><span class="burger">☰</span><span class="word">Menu</span></a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<main class="content" role="main">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post post">
|
||||||
|
|
||||||
|
<header class="post-header">
|
||||||
|
<h1 class="post-title">WebDAV with nginx</h1>
|
||||||
|
<small></small>
|
||||||
|
|
||||||
|
<section class="post-meta">
|
||||||
|
|
||||||
|
<time class="post-date" datetime="2016-03-26T00:00:00+01:00">
|
||||||
|
26 March 2016
|
||||||
|
</time>
|
||||||
|
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<section class="post-content">
|
||||||
|
|
||||||
|
|
||||||
|
<p>This website has been hosted on an <a href="https://www.online.net">Online.net</a> dedicated server since its creation. I’ve been one of their customers for the past 3 years now, and I still don’t have anything bad to say about them.</p>
|
||||||
|
|
||||||
|
<p>They recently upgraded their personnal range, and I took the opportunity to upgrade from a single server running all of my services to 2 servers running LXC containers that are hosting my services.</p>
|
||||||
|
|
||||||
|
<p>It took me 2 days to migrate everything, but it was worth it. If I decide to switch servers again, I’ll have to migrate the containers instead of the services themselves. Considering they are stored on a separate BTRFS volume, it shouldn’t take me more than a few hours at most.</p>
|
||||||
|
|
||||||
|
<p>During the migration, I realized that I needed to make files that were hosted on one server accessible to the other. I could have gone with CIFS or NFS, but I wanted to have encryption built-in instead of having to rely on a VPN for that. Since I figured it was a good opportunity to learn something new, I ended up going with WebDAV.</p>
|
||||||
|
|
||||||
|
<p>In this tutorial, I’ll explain how I’ve configured a read-only WebDAV share using <a href="https://www.nginx.com/">nginx</a> and <a href="https://letsencrypt.org/">Let’sEncrypt</a> SSL certificates between two Debian Jessie containers.</p>
|
||||||
|
|
||||||
|
<h2 id="server-configuration">Server configuration</h2>
|
||||||
|
|
||||||
|
<h3 id="installing-the-required-packages">Installing the required packages</h3>
|
||||||
|
|
||||||
|
<p>First thing first, we need to install the packages we’ll need for this configuration :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">apt update
|
||||||
|
|
||||||
|
apt -t jessie-backports install nginx letsencrypt
|
||||||
|
apt install apache2-utils
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h3 id="getting-our-first-certificate-from-letsencrypt">Getting our first certificate from letsencrypt</h3>
|
||||||
|
|
||||||
|
<h4 id="letsencrypt-configuration">letsencrypt configuration</h4>
|
||||||
|
|
||||||
|
<p>Let’s create a configuration file for letsencrypt :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">mkdir /etc/letsencrypt
|
||||||
|
|
||||||
|
echo 'rsa-key-size = 3072
|
||||||
|
renew-by-default
|
||||||
|
text = True
|
||||||
|
agree-tos = True
|
||||||
|
renew-by-default = True
|
||||||
|
authenticator = webroot
|
||||||
|
email = admin@example.com
|
||||||
|
webroot-path = /var/www/letsencrypt/' > /etc/letsencrypt/cli.ini
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p><em>Please do modify admin@example.com by your actual e-mail address.</em></p>
|
||||||
|
|
||||||
|
<p>We also need to create the directory structure where letsencrypt ACME challenge temporary files will be stored :</p>
|
||||||
|
|
||||||
|
<pre><code>mkdir -p /var/www/letsencrypt/.well-known
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h4 id="nginx-configuration">nginx configuration</h4>
|
||||||
|
|
||||||
|
<p>We now need to configure nginx by adding the following in the <code>/etc/nginx/sites-available/default</code> file, anywhere in the <code>server{}</code> block that is configured to listen on port 80.</p>
|
||||||
|
|
||||||
|
<pre><code>location /.well-known/acme-challenge {
|
||||||
|
root /var/www/letsencrypt;
|
||||||
|
}
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>Let’s make sure that we haven’t done anything wrong :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">nginx -t
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>The command should give you the following output :</p>
|
||||||
|
|
||||||
|
<pre><code>nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
|
||||||
|
nginx: configuration file /etc/nginx/nginx.conf test is successful
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>If that’s the case, you can safely reload the nginx daemon :</p>
|
||||||
|
|
||||||
|
<pre><code>nginx -s reload
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h4 id="certificate-request">Certificate request</h4>
|
||||||
|
|
||||||
|
<p>Now that letsencrypt and nginx are properly configured, we can request our certificate from letsencrypt :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">letsencrypt --config /etc/letsencrypt/cli.ini certonly -w /var/www/letsencrypt -d www.example.com
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p><em>Please do modify www.example.com by your server’s FQDN, and please note that the letsencrypt servers need to be able to resolve that name to your server’s IP.</em></p>
|
||||||
|
|
||||||
|
<p>If everything goes well, your certificates will be generated and stored in the /etc/letsencrypt folder.</p>
|
||||||
|
|
||||||
|
<h3 id="webdav-configuration">WebDAV configuration</h3>
|
||||||
|
|
||||||
|
<p>Now that we’ve obtained our certificate from letsencrypt, we can begin configuring nginx.</p>
|
||||||
|
|
||||||
|
<p>First, we need to comment two SSL directives from the default nginx configuration :</p>
|
||||||
|
|
||||||
|
<pre><code>sed -i '/ssl_/ s/^/#/' /etc/nginx/nginx.conf
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>Let’s now create a <code>/etc/nginx/conf.d/ssl.conf</code> with the following content :</p>
|
||||||
|
|
||||||
|
<pre><code>ssl_session_timeout 1d;
|
||||||
|
ssl_session_cache shared:SSL:50m;
|
||||||
|
ssl_session_tickets off;
|
||||||
|
|
||||||
|
ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;
|
||||||
|
ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
|
||||||
|
ssl_trusted_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;
|
||||||
|
|
||||||
|
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
|
||||||
|
|
||||||
|
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
|
||||||
|
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
|
||||||
|
ssl_prefer_server_ciphers on;
|
||||||
|
|
||||||
|
add_header Strict-Transport-Security max-age=15768000;
|
||||||
|
add_header X-Frame-Options DENY;
|
||||||
|
add_header X-Content-Type-Options nosniff;
|
||||||
|
|
||||||
|
ssl_stapling on;
|
||||||
|
ssl_stapling_verify on;
|
||||||
|
resolver 127.0.0.1 valid=300s;
|
||||||
|
resolver_timeout 5s;
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p><em>This configuration will work if you’re using a single certificate on your server. If not, you’ll have to remove the <code>ssl_certificate</code>, <code>ssl_certificate_key</code> and <code>ssl_trusted_certificate</code> directives from this file and move them to the correct <code>server{}</code> block.</em></p>
|
||||||
|
|
||||||
|
<p>We now need to generate a <code>dhparam.pem</code> file :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">mkdir /etc/nginx/ssl && chmod 700 /etc/nginx/ssl
|
||||||
|
openssl dhparam -out /etc/nginx/ssl/dhparam.pem 3072
|
||||||
|
chmod 600 /etc/nginx/ssl/dhparam.pem
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>Let’s now generate a HTTP basic authentication file. This example creates a user named example :</p>
|
||||||
|
|
||||||
|
<pre><code>mkdir /etc/nginx/auth
|
||||||
|
|
||||||
|
htpasswd -c /etc/nginx/auth/webdav example
|
||||||
|
New password:
|
||||||
|
Re-type new password:
|
||||||
|
Adding password for user user
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>This file has to be readable by the user running your webserver. For security reasons, we’ll make it readable only by him :</p>
|
||||||
|
|
||||||
|
<pre><code>chown -R www-data:nogroup /etc/nginx/auth
|
||||||
|
chmod 700 /etc/nginx/auth
|
||||||
|
chmod 400 /etc/nginx/auth/webdav
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>Let’s now modify our <code>/etc/nginx/sites-available/default</code> file with the following content :</p>
|
||||||
|
|
||||||
|
<pre><code>server {
|
||||||
|
listen 80 default_server;
|
||||||
|
listen [::]:80 default_server ipv6only=on;
|
||||||
|
server_name "";
|
||||||
|
|
||||||
|
return 444;
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 443 default_server ssl http2;
|
||||||
|
listen [::]:443 default_server ipv6only=on ssl http2;
|
||||||
|
server_name "";
|
||||||
|
|
||||||
|
return 444;
|
||||||
|
}
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>We now have to create a <code>/etc/nginx/sites-available/example</code> file that will contain our actual webdav configuration. This example makes a <code>data</code> folder stored in <code>/var/www/</code> accessible.</p>
|
||||||
|
|
||||||
|
<pre><code>server {
|
||||||
|
listen 80;
|
||||||
|
listen [::]:80;
|
||||||
|
server_name www.example.com;
|
||||||
|
return 301 https://$server_name$request_uri;
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 443 ssl http2;
|
||||||
|
listen [::]:443 ssl http2;
|
||||||
|
server_name www.example.com;
|
||||||
|
|
||||||
|
root /var/www;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
index index.html;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /.well-known/acme-challenge {
|
||||||
|
root /var/www/letsencrypt;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /data {
|
||||||
|
client_body_temp_path /tmp;
|
||||||
|
dav_methods PUT DELETE MKCOL COPY MOVE;
|
||||||
|
dav_ext_methods PROPFIND OPTIONS;
|
||||||
|
create_full_put_path on;
|
||||||
|
dav_access user:r group:r;
|
||||||
|
|
||||||
|
auth_basic "Restricted access";
|
||||||
|
auth_basic_user_file auth/webdav;
|
||||||
|
|
||||||
|
limit_except GET {
|
||||||
|
allow <YOUR IP HERE>;
|
||||||
|
deny all;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>The last thing we have to do is to create a symlink so that nginx will load our configuration :</p>
|
||||||
|
|
||||||
|
<pre><code>ln -s /etc/nginx/sites-available/example /etc/nginx/sites-enabled/example
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>Like before, let’s make sure our configuration is correct and then reload the daemon :</p>
|
||||||
|
|
||||||
|
<pre><code>nginx -t
|
||||||
|
nginx -s reload
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>That’s it for the WebDAV configuration server-side !</p>
|
||||||
|
|
||||||
|
<h3 id="nginx-monitoring">nginx monitoring</h3>
|
||||||
|
|
||||||
|
<p>If you’re using monit, you can easily monitor the nginx daemon by copying the following in <code>/etc/monit/conf.d/nginx</code> :</p>
|
||||||
|
|
||||||
|
<pre><code>check process nginx
|
||||||
|
with pidfile "/run/nginx.pid"
|
||||||
|
start program = "/bin/systemctl start nginx"
|
||||||
|
stop program = "/bin/systemctl stop nginx"
|
||||||
|
alert monit@example.com
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h3 id="certificates-auto-renewal">Certificates auto-renewal</h3>
|
||||||
|
|
||||||
|
<p>This goes beyond the scope of the article, but since letsencrypt certficates are only valid for 3 months, you’ll need to renew them regularily. You can do so manually or you can setup a cron that does it for you.</p>
|
||||||
|
|
||||||
|
<p>I personnaly use the following script :</p>
|
||||||
|
|
||||||
|
<pre><code>#!/bin/bash
|
||||||
|
|
||||||
|
PRG="/usr/bin/letsencrypt"
|
||||||
|
CONFIG="/etc/letsencrypt/cli.ini"
|
||||||
|
MAILDEST="admin@example.com"
|
||||||
|
GLOBAL=0
|
||||||
|
|
||||||
|
# www.example.com
|
||||||
|
$PRG --config $CONFIG certonly -w /var/www/letsencrypt -d www.example.com
|
||||||
|
[[ $? != 0 ]] && GLOBAL=$(( $GLOBAL + 1 ))
|
||||||
|
|
||||||
|
if [[ $GLOBAL == 0 ]]; then
|
||||||
|
/usr/sbin/nginx -s reload
|
||||||
|
else
|
||||||
|
echo "Something went wrong while renewing the certificates on $(hostname -f)
|
||||||
|
Manual action needed." | mail -s "Letsencrypt error on $(hostname -f)" $MAILDEST
|
||||||
|
fi
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>You can add multiple domains in the script. As long as you add all 3 lines for each domain, it will not automatically reload nginx if one or more certificate could not be renewed and will send an e-mail to the address configured in the <code>MAILDEST</code> variable.</p>
|
||||||
|
|
||||||
|
<p>You can configure this script in the root user crontab using the <code>crontab -e</code> command :</p>
|
||||||
|
|
||||||
|
<pre><code>## LETSENCRYPT CERTIFICATE AUTORENEWAL
|
||||||
|
30 03 01 */2 * /root/bin/tlsrenew
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>This will run the script every two months, on the first day of the month, at 3:30 AM.</p>
|
||||||
|
|
||||||
|
<h2 id="client-configuration">Client configuration</h2>
|
||||||
|
|
||||||
|
<h3 id="installing-the-required-packages-1">Installing the required packages</h3>
|
||||||
|
|
||||||
|
<p>A single package is required to mount a webdav volume on Debian :</p>
|
||||||
|
|
||||||
|
<pre><code>apt update && apt install davfs2
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h3 id="mounting-the-share-manually">Mounting the share manually</h3>
|
||||||
|
|
||||||
|
<p>If like me, you want to mount your webdav share in a LXC container, you’ll first need to make sure that the following line is present in its configuration file :</p>
|
||||||
|
|
||||||
|
<pre><code>lxc.cgroup.devices.allow = c 10:229 rwm
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>You’ll also need to create the <code>/dev/fuse</code> node in the container :</p>
|
||||||
|
|
||||||
|
<pre><code>mknod /dev/fuse c 10 229
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>In any case, we have to edit the <code>/etc/davfs2/secrets</code> file to add the mount point, username and password that will be used to mount the share :</p>
|
||||||
|
|
||||||
|
<pre><code>echo '/data webdav notanactualpassword' >> /etc/davfs2/secrets
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>Once that’s done, we can mount our share with the following command :</p>
|
||||||
|
|
||||||
|
<pre><code>mount -t davfs https://www.example.com/data /data -o ro,dir_mode=750,file_mode=640,uid=root,gid=root
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>You might need to edit the parameters depending on which users you want to make the share available to.</p>
|
||||||
|
|
||||||
|
<h3 id="mouting-the-share-on-boot">Mouting the share on boot</h3>
|
||||||
|
|
||||||
|
<p>A davfs volume can be mounted via the <code>/etc/fstab</code> file, but I decided to use monit instead so that the volume would be mounted again automatically should my WebDAV server reboot.</p>
|
||||||
|
|
||||||
|
<p>In order to do so, I first created a <code>davfs.txt</code> file in the <code>/var/www/data</code> folder on my WebDAV server :</p>
|
||||||
|
|
||||||
|
<pre><code>touch /var/www/data/davfs.txt
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>I then created the following <code>/root/bin/mount_davfs</code> script :</p>
|
||||||
|
|
||||||
|
<pre><code>#!/bin/bash
|
||||||
|
|
||||||
|
mknod /dev/fuse c 10 229
|
||||||
|
mount -t davfs https://www.example.com/data /data -o ro,dir_mode=750,file_mode=640,uid=root,gid=root
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>The last thing I did was create a <code>/etc/monit/conf.d/davfs</code> file with the following content :</p>
|
||||||
|
|
||||||
|
<pre><code>check file davfs with path /data/davfs.txt
|
||||||
|
alert monit@example.com
|
||||||
|
if does not exist then exec "/root/bin/mount_davfs"
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>That way, if monit notices that the <code>/data/davfs.txt</code> file becomes inaccessible for some reason, it will try remouting the share.</p>
|
||||||
|
|
||||||
|
<h2 id="conclusion">Conclusion</h2>
|
||||||
|
|
||||||
|
<p>That’s all ! Hopefully this has been useful to someone. Please do comment below if you have any question or if this has been helpful !</p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="post-footer">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<figure class="author-image">
|
||||||
|
<a class="img" href="https://www.captainark.net/" style="background-image: url(/images/author.jpg)"><span class="hidden">Antoine Joubert's Picture</span></a>
|
||||||
|
</figure>
|
||||||
|
|
||||||
|
|
||||||
|
<section class="author">
|
||||||
|
<h4><a href="https://www.captainark.net/">Antoine Joubert</a></h4>
|
||||||
|
|
||||||
|
<p>Geek | Gamer | TV Shows Aficionado</p>
|
||||||
|
|
||||||
|
<div class="author-meta">
|
||||||
|
<span class="author-location icon-location">Angers, France</span>
|
||||||
|
<span class="author-link icon-link"><a href="https://www.captainark.net">https://www.captainark.net</a></span>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
|
||||||
|
<aside class="read-next">
|
||||||
|
|
||||||
|
<a class="read-next-story" style="no-cover" href="/2018/04/14/dns-zone-versioning/">
|
||||||
|
<section class="post">
|
||||||
|
<h2>DNS zone versioning</h2>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="read-next-story prev" style="no-cover" href="/2016/03/13/mysql-backup-script/">
|
||||||
|
<section class="post">
|
||||||
|
<h2>MySQL backup script</h2>
|
||||||
|
</section>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<center>
|
||||||
|
<a class="fa-icons" href="mailto:contact@captainark.net">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-envelope fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://twitter.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://social.captainark.net/users/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-mastodon-alt fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://github.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.last.fm/user/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-lastfm fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://steamcommunity.com/id/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-steam fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.twitch.tv/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitch fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</center>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="site-footer clearfix">
|
||||||
|
<section class="copyright"><a href="">Sysadmining. All day. Every day.</a> © 2015 - 2019</section>
|
||||||
|
|
||||||
|
<section class="poweredby">Proudly generated by <a class="icon-hugo" href="http://gohugo.io">HUGO</a>, with <a class="icon-theme" href="https://github.com/vjeantet/hugo-theme-casper">Casper</a> theme</section>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript" src="/js/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/jquery.fitvids.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/index.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
519
public/2018/04/14/dns-zone-versioning/index.html
Normal file
@ -0,0 +1,519 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en-us">
|
||||||
|
<head>
|
||||||
|
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:card" content="summary"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:title" content="DNS zone versioning"/>
|
||||||
|
<meta name="twitter:description" content=""/>
|
||||||
|
<meta name="twitter:site" content="@"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:title" content="DNS zone versioning · Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:site_name" content="Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:url" content="https://www.captainark.net/2018/04/14/dns-zone-versioning/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:image" content="/images/cover.jpg"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:description" content="" />
|
||||||
|
<meta property="og:type" content="article" />
|
||||||
|
<meta property="article:published_time" content="2018-04-14T00:00:00+01:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<title>DNS zone versioning · Sysadmining. All day. Every day.</title>
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="description" content="I&rsquo;ve been using PowerDNS with a SQL backend as a hidden master DNS server for a few years now.
|
||||||
|
I&rsquo;ve been wanting to write a quick shell script to ve" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="HandheldFriendly" content="True" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="/images/favicon.ico">
|
||||||
|
<link rel="apple-touch-icon" href="/images/apple-touch-icon.png" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/screen.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/nav.css" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/solarized-light.min.css">
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js"></script>
|
||||||
|
|
||||||
|
<script>hljs.initHighlightingOnLoad();</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link href="/index.xml" rel="alternate" type="application/rss+xml" title="Sysadmining. All day. Every day." />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="generator" content="Hugo 0.53" />
|
||||||
|
|
||||||
|
<link rel="canonical" href="https://www.captainark.net/2018/04/14/dns-zone-versioning/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "Article",
|
||||||
|
"publisher": {
|
||||||
|
"@type": "Organization",
|
||||||
|
"name": ,
|
||||||
|
"logo": https://www.captainark.net/images/logo.png
|
||||||
|
},
|
||||||
|
"author": {
|
||||||
|
"@type": "Person",
|
||||||
|
"name": ,
|
||||||
|
|
||||||
|
"image": {
|
||||||
|
"@type": "ImageObject",
|
||||||
|
"url": https://www.captainark.net/images/author.jpg,
|
||||||
|
"width": 250,
|
||||||
|
"height": 250
|
||||||
|
},
|
||||||
|
|
||||||
|
"url": https://www.captainark.net,
|
||||||
|
"sameAs": [
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
],
|
||||||
|
"description": Geek | Gamer | TV Shows Aficionado
|
||||||
|
|
||||||
|
},
|
||||||
|
"headline": DNS zone versioning,
|
||||||
|
"name": DNS zone versioning,
|
||||||
|
"wordCount": 621,
|
||||||
|
"timeRequired": "PT3M",
|
||||||
|
"inLanguage": {
|
||||||
|
"@type": "Language",
|
||||||
|
"alternateName": en
|
||||||
|
},
|
||||||
|
"url": https://www.captainark.net/2018/04/14/dns-zone-versioning/,
|
||||||
|
"datePublished": 2018-04-14T00:00Z,
|
||||||
|
"dateModified": 2018-04-14T00:00Z,
|
||||||
|
|
||||||
|
|
||||||
|
"description": ,
|
||||||
|
"mainEntityOfPage": {
|
||||||
|
"@type": "WebPage",
|
||||||
|
"@id": https://www.captainark.net/2018/04/14/dns-zone-versioning/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
(function(f, a, t, h, o, m){
|
||||||
|
a[h]=a[h]||function(){
|
||||||
|
(a[h].q=a[h].q||[]).push(arguments)
|
||||||
|
};
|
||||||
|
o=f.createElement('script'),
|
||||||
|
m=f.getElementsByTagName('script')[0];
|
||||||
|
o.async=1; o.src=t; o.id='fathom-script';
|
||||||
|
m.parentNode.insertBefore(o,m)
|
||||||
|
})(document, window, '//stats.captainark.net/tracker.js', 'fathom');
|
||||||
|
fathom('set', 'siteId', 'GEWGL');
|
||||||
|
fathom('trackPageview');
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.1.5/css/fork-awesome.min.css" integrity="sha256-P64qV9gULPHiZTdrS1nM59toStkgjM0dsf5mK/UwBV4=" crossorigin="anonymous">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body class="nav-closed">
|
||||||
|
|
||||||
|
<div class="nav">
|
||||||
|
<h3 class="nav-title">Menu</h3>
|
||||||
|
<a href="#" class="nav-close">
|
||||||
|
<span class="hidden">Close</span>
|
||||||
|
</a>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h3>This site</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/about">About</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/resume">Resume</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<h3>Other services</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://git.captainark.net">Gitea</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://pics.captainark.net">Chevereto</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://paste.captainark.net">Privatebin</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://chat.captainark.net">Rocket.Chat</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="subscribe-button icon-feed" href="/index.xml">Subscribe</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<span class="nav-cover"></span>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="site-wrapper">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<header class="main-header post-head no-cover">
|
||||||
|
<nav class="main-nav clearfix">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a class="blog-logo" href="https://www.captainark.net/"><img src="/images/logo.png" alt="Home" /></a>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="menu-button" href="#"><span class="burger">☰</span><span class="word">Menu</span></a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<main class="content" role="main">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post post">
|
||||||
|
|
||||||
|
<header class="post-header">
|
||||||
|
<h1 class="post-title">DNS zone versioning</h1>
|
||||||
|
<small></small>
|
||||||
|
|
||||||
|
<section class="post-meta">
|
||||||
|
|
||||||
|
<time class="post-date" datetime="2018-04-14T00:00:00+01:00">
|
||||||
|
14 April 2018
|
||||||
|
</time>
|
||||||
|
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<section class="post-content">
|
||||||
|
|
||||||
|
|
||||||
|
<p>I’ve been using <a href="https://doc.powerdns.com/md/">PowerDNS</a> with a SQL backend as a hidden master DNS server for a few years now.</p>
|
||||||
|
|
||||||
|
<p>I’ve been wanting to write a quick shell script to version my DNS zones for a while, and since I’ve finally taken the time to do so today, I figured I’d share it here.</p>
|
||||||
|
|
||||||
|
<p>The script uses PowerDNS API to list the configured zones. It then exports them to a file in an AXFR-like format, commits and finally pushes them on a git repository</p>
|
||||||
|
|
||||||
|
<h1 id="configuration">Configuration</h1>
|
||||||
|
|
||||||
|
<h2 id="powerdns">PowerDNS</h2>
|
||||||
|
|
||||||
|
<p>For the script to work, we have to activate PowerDNS’ API.</p>
|
||||||
|
|
||||||
|
<p>To do so, let’s create a <code>/etc/powerdns/pdns.d/api.conf</code> file with the following content :</p>
|
||||||
|
|
||||||
|
<pre><code>api=yes
|
||||||
|
api-key=mysupersecretapikey
|
||||||
|
webserver=yes
|
||||||
|
webserver-address=10.0.0.10
|
||||||
|
webserver-allow-from=10.0.0.0/8
|
||||||
|
webserver-port=8081
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>You should change <em>mysupersecretapikey</em> to an actual secret.</p>
|
||||||
|
|
||||||
|
<p>You should also adapt the <code>webserver-address</code> and <code>webserver-allow-from</code> to reflect your network configuration.</p>
|
||||||
|
|
||||||
|
<p>Once the file is created, we have to restart pdnsd :</p>
|
||||||
|
|
||||||
|
<pre><code>systemctl restart pdns.service
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p><strong>N.B. :</strong> As with all my other articles, I’m assuming here you’re running Debian. The path of the configuration file you have to create or edit might not be the same if you’re running another distribution or if you’ve installed PowerDNS from source.</p>
|
||||||
|
|
||||||
|
<h2 id="jq">jq</h2>
|
||||||
|
|
||||||
|
<p><a href="https://stedolan.github.io/jq/">jq</a> is required for the script to work, so let’s install it !</p>
|
||||||
|
|
||||||
|
<pre><code>apt install jq
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h2 id="git">Git</h2>
|
||||||
|
|
||||||
|
<p>We now have to create a git repository to host our zone files.</p>
|
||||||
|
|
||||||
|
<p>To do so, you can follow my <a href="https://www.captainark.net/2016/01/31/private-git-repo/">previous tutorial</a> on the subject if you want.</p>
|
||||||
|
|
||||||
|
<p>I’ve personnaly migrated my git repos to a self-hosted <a href="https://gogs.io/">Gogs</a> installation a while back.</p>
|
||||||
|
|
||||||
|
<p>If you don’t care about your zones content being public (it already is, technically), you could create a GitHub repo for that use (or on any other available git hosting).</p>
|
||||||
|
|
||||||
|
<p>Once you’ve created your repo, you should clone it on the machine that will run the script. For me, the path to the repo will be <code>/home/captainark/backup/dnsexport</code>.</p>
|
||||||
|
|
||||||
|
<pre><code>apt install git
|
||||||
|
mkdir ~/backup && cd ~/backup
|
||||||
|
git clone ssh://git@git.captainark.net/captainark/dnsexport.git
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>You should also create a <code>~/.gitconfig</code> for the user that will run the script with the following parameters configured :</p>
|
||||||
|
|
||||||
|
<pre><code>[user]
|
||||||
|
email = captainark@captainark.net
|
||||||
|
name = CaptainArk
|
||||||
|
[push]
|
||||||
|
default = simple
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>Also, make sure your user can push to the remote server before running the script. The following should work :</p>
|
||||||
|
|
||||||
|
<pre><code>cd ~/backup/dnsexport
|
||||||
|
echo '# DNSEXPORT' > README.md
|
||||||
|
git add README.md
|
||||||
|
git commit README.md -m 'adding README'
|
||||||
|
git push
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h1 id="script">Script</h1>
|
||||||
|
|
||||||
|
<p>Once we’ve finished configuring PowerDNS and Git, we can run the script.</p>
|
||||||
|
|
||||||
|
<p>You can copy the following to <code>~/bin/dnsexport</code> :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-bash">#!/bin/bash
|
||||||
|
|
||||||
|
ApiKey="mysupersecretapikey"
|
||||||
|
PdnsUrl="10.0.0.10:8081"
|
||||||
|
PdnsServerName="localhost"
|
||||||
|
PdnsZoneUrl="http://${PdnsUrl}/api/v1/servers/${PdnsServerName}/zones"
|
||||||
|
ZoneList=$(/usr/bin/curl -sH "X-API-Key: ${ApiKey}" ${PdnsZoneUrl} | jq -r '.[].id')
|
||||||
|
ExportFolder="/home/captainark/backup/dnsexport"
|
||||||
|
|
||||||
|
updateremote() {
|
||||||
|
cd $ExportFolder
|
||||||
|
git add db.${Zone%.}
|
||||||
|
git commit -m "Automated commit due to modification on ${Zone%.} at $(date -Iseconds)"
|
||||||
|
git push
|
||||||
|
cd -
|
||||||
|
}
|
||||||
|
|
||||||
|
for Zone in ${ZoneList}; do
|
||||||
|
ZoneFile="${ExportFolder}/db.${Zone%.}"
|
||||||
|
CurrentShaSum=$(/usr/bin/sha256sum ${ZoneFile})
|
||||||
|
/usr/bin/curl -o ${ZoneFile} -sH "X-API-Key: ${ApiKey}" ${PdnsZoneUrl}/${Zone}/export
|
||||||
|
NewShaSum=$(/usr/bin/sha256sum ${ZoneFile})
|
||||||
|
[[ ${NewShaSum% *} != ${CurrentShaSum% *} ]] && updateremote
|
||||||
|
done
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>It’s nothing fancy, but it does the job.</p>
|
||||||
|
|
||||||
|
<p>You’ll have to adapt the <code>ApiKey</code>, <code>PdnsUrl</code> and <code>ExportFolder</code> variables to your configuration.</p>
|
||||||
|
|
||||||
|
<p>Once that’s done, let’s fix the permissions on the script :</p>
|
||||||
|
|
||||||
|
<pre><code>chmod 700 ~/bin/dnsexport
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>You should run the script manually once to make sure everything is working OK. If it is, you should see a new commit on the repo for each zone you have configured in PowerDNS.</p>
|
||||||
|
|
||||||
|
<p>Once the script has executed once without issue, you can schedule it regularly. I have it running every 10 minutes in my user’s crontab :</p>
|
||||||
|
|
||||||
|
<pre><code>crontab -e
|
||||||
|
# DNSEXPORT
|
||||||
|
*/10 * * * * /home/captainark/bin/dnsexport
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h1 id="conclusion">Conclusion</h1>
|
||||||
|
|
||||||
|
<p>That’s all !</p>
|
||||||
|
|
||||||
|
<p>As always, if you’ve found this article useful, please feel free to make use of the comments section below !</p>
|
||||||
|
|
||||||
|
<p>Hopefully it won’t take as long before I write another article here next time !</p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="post-footer">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<figure class="author-image">
|
||||||
|
<a class="img" href="https://www.captainark.net/" style="background-image: url(/images/author.jpg)"><span class="hidden">Antoine Joubert's Picture</span></a>
|
||||||
|
</figure>
|
||||||
|
|
||||||
|
|
||||||
|
<section class="author">
|
||||||
|
<h4><a href="https://www.captainark.net/">Antoine Joubert</a></h4>
|
||||||
|
|
||||||
|
<p>Geek | Gamer | TV Shows Aficionado</p>
|
||||||
|
|
||||||
|
<div class="author-meta">
|
||||||
|
<span class="author-location icon-location">Angers, France</span>
|
||||||
|
<span class="author-link icon-link"><a href="https://www.captainark.net">https://www.captainark.net</a></span>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
|
||||||
|
<aside class="read-next">
|
||||||
|
|
||||||
|
<a class="read-next-story" style="no-cover" href="/2018/11/27/self-hosted-report-uri/">
|
||||||
|
<section class="post">
|
||||||
|
<h2>Self-hosted report-uri</h2>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="read-next-story prev" style="no-cover" href="/2016/03/26/webdav-with-nginx/">
|
||||||
|
<section class="post">
|
||||||
|
<h2>WebDAV with nginx</h2>
|
||||||
|
</section>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<center>
|
||||||
|
<a class="fa-icons" href="mailto:contact@captainark.net">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-envelope fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://twitter.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://social.captainark.net/users/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-mastodon-alt fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://github.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.last.fm/user/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-lastfm fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://steamcommunity.com/id/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-steam fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.twitch.tv/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitch fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</center>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="site-footer clearfix">
|
||||||
|
<section class="copyright"><a href="">Sysadmining. All day. Every day.</a> © 2015 - 2019</section>
|
||||||
|
|
||||||
|
<section class="poweredby">Proudly generated by <a class="icon-hugo" href="http://gohugo.io">HUGO</a>, with <a class="icon-theme" href="https://github.com/vjeantet/hugo-theme-casper">Casper</a> theme</section>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript" src="/js/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/jquery.fitvids.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/index.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
527
public/2018/11/27/self-hosted-report-uri/index.html
Normal file
@ -0,0 +1,527 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en-us">
|
||||||
|
<head>
|
||||||
|
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:card" content="summary"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:title" content="Self-hosted report-uri"/>
|
||||||
|
<meta name="twitter:description" content=""/>
|
||||||
|
<meta name="twitter:site" content="@"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:title" content="Self-hosted report-uri · Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:site_name" content="Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:url" content="https://www.captainark.net/2018/11/27/self-hosted-report-uri/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:image" content="/images/cover.jpg"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:description" content="" />
|
||||||
|
<meta property="og:type" content="article" />
|
||||||
|
<meta property="article:published_time" content="2018-11-27T00:00:00+01:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<title>Self-hosted report-uri · Sysadmining. All day. Every day.</title>
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="description" content="I&rsquo;ve been playing with the security headers for this website for the past few days, most notably with the Content-Security-Policy as well as the Expect-CT" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="HandheldFriendly" content="True" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="/images/favicon.ico">
|
||||||
|
<link rel="apple-touch-icon" href="/images/apple-touch-icon.png" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/screen.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/nav.css" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/solarized-light.min.css">
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js"></script>
|
||||||
|
|
||||||
|
<script>hljs.initHighlightingOnLoad();</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link href="/index.xml" rel="alternate" type="application/rss+xml" title="Sysadmining. All day. Every day." />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="generator" content="Hugo 0.53" />
|
||||||
|
|
||||||
|
<link rel="canonical" href="https://www.captainark.net/2018/11/27/self-hosted-report-uri/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "Article",
|
||||||
|
"publisher": {
|
||||||
|
"@type": "Organization",
|
||||||
|
"name": ,
|
||||||
|
"logo": https://www.captainark.net/images/logo.png
|
||||||
|
},
|
||||||
|
"author": {
|
||||||
|
"@type": "Person",
|
||||||
|
"name": ,
|
||||||
|
|
||||||
|
"image": {
|
||||||
|
"@type": "ImageObject",
|
||||||
|
"url": https://www.captainark.net/images/author.jpg,
|
||||||
|
"width": 250,
|
||||||
|
"height": 250
|
||||||
|
},
|
||||||
|
|
||||||
|
"url": https://www.captainark.net,
|
||||||
|
"sameAs": [
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
],
|
||||||
|
"description": Geek | Gamer | TV Shows Aficionado
|
||||||
|
|
||||||
|
},
|
||||||
|
"headline": Self-hosted report-uri,
|
||||||
|
"name": Self-hosted report-uri,
|
||||||
|
"wordCount": 849,
|
||||||
|
"timeRequired": "PT4M",
|
||||||
|
"inLanguage": {
|
||||||
|
"@type": "Language",
|
||||||
|
"alternateName": en
|
||||||
|
},
|
||||||
|
"url": https://www.captainark.net/2018/11/27/self-hosted-report-uri/,
|
||||||
|
"datePublished": 2018-11-27T00:00Z,
|
||||||
|
"dateModified": 2018-11-27T00:00Z,
|
||||||
|
|
||||||
|
|
||||||
|
"description": ,
|
||||||
|
"mainEntityOfPage": {
|
||||||
|
"@type": "WebPage",
|
||||||
|
"@id": https://www.captainark.net/2018/11/27/self-hosted-report-uri/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
(function(f, a, t, h, o, m){
|
||||||
|
a[h]=a[h]||function(){
|
||||||
|
(a[h].q=a[h].q||[]).push(arguments)
|
||||||
|
};
|
||||||
|
o=f.createElement('script'),
|
||||||
|
m=f.getElementsByTagName('script')[0];
|
||||||
|
o.async=1; o.src=t; o.id='fathom-script';
|
||||||
|
m.parentNode.insertBefore(o,m)
|
||||||
|
})(document, window, '//stats.captainark.net/tracker.js', 'fathom');
|
||||||
|
fathom('set', 'siteId', 'GEWGL');
|
||||||
|
fathom('trackPageview');
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.1.5/css/fork-awesome.min.css" integrity="sha256-P64qV9gULPHiZTdrS1nM59toStkgjM0dsf5mK/UwBV4=" crossorigin="anonymous">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body class="nav-closed">
|
||||||
|
|
||||||
|
<div class="nav">
|
||||||
|
<h3 class="nav-title">Menu</h3>
|
||||||
|
<a href="#" class="nav-close">
|
||||||
|
<span class="hidden">Close</span>
|
||||||
|
</a>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h3>This site</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/about">About</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/resume">Resume</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<h3>Other services</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://git.captainark.net">Gitea</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://pics.captainark.net">Chevereto</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://paste.captainark.net">Privatebin</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://chat.captainark.net">Rocket.Chat</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="subscribe-button icon-feed" href="/index.xml">Subscribe</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<span class="nav-cover"></span>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="site-wrapper">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<header class="main-header post-head no-cover">
|
||||||
|
<nav class="main-nav clearfix">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a class="blog-logo" href="https://www.captainark.net/"><img src="/images/logo.png" alt="Home" /></a>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="menu-button" href="#"><span class="burger">☰</span><span class="word">Menu</span></a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<main class="content" role="main">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post post">
|
||||||
|
|
||||||
|
<header class="post-header">
|
||||||
|
<h1 class="post-title">Self-hosted report-uri</h1>
|
||||||
|
<small></small>
|
||||||
|
|
||||||
|
<section class="post-meta">
|
||||||
|
|
||||||
|
<time class="post-date" datetime="2018-11-27T00:00:00+01:00">
|
||||||
|
27 November 2018
|
||||||
|
</time>
|
||||||
|
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<section class="post-content">
|
||||||
|
|
||||||
|
|
||||||
|
<p>I’ve been playing with the security headers for this website for the past few days, most notably with the <code>Content-Security-Policy</code> as well as the <code>Expect-CT</code> headers.</p>
|
||||||
|
|
||||||
|
<p>After having spent a few hours on this, I’m pretty happy with the results !</p>
|
||||||
|
|
||||||
|
<p><img src="/images/mozilla_observatory.png" alt="Screenshot-2018-11-27-at-21.52.58" />
|
||||||
|
Source : <a href="https://observatory.mozilla.org/">Observatory by Mozilla</a></p>
|
||||||
|
|
||||||
|
<p>This website runs on a <a href="https://ghost.org/">Ghost</a> installation that I keep up-to-date. Since an update might mean that the site will try to load new external resources, the <code>Content-Security-Policy</code> header might need updating as well.</p>
|
||||||
|
|
||||||
|
<p>This header has a <code>report-uri</code> directive that makes web browsers send json-formatted messages of policy violations they encounter.</p>
|
||||||
|
|
||||||
|
<p>There’s a great website (<a href="https://report-uri.com/">Report-URI</a>) that you can use to handle these reports. It allows up to 10.000 reports per month with a free account, which should be enough for a low to mid trafic website once you’ve setup your initial policy.</p>
|
||||||
|
|
||||||
|
<p>However, since I’m all about self-hosting <em>all of the things</em>, I figured I would configure my own report-uri using a php script.</p>
|
||||||
|
|
||||||
|
<h2 id="the-script">The script</h2>
|
||||||
|
|
||||||
|
<p>This script is heavily inspired from the ones available <a href="https://github.com/LastBreach/csp-report-to-syslog">here</a> and <a href="https://mathiasbynens.be/notes/csp-reports">here</a>.</p>
|
||||||
|
|
||||||
|
<p>The script checks that the content that was sent by the web browser is correctly formatted json message. It then removes the backslashes from the message, opens a connection to the local syslog daemon and sends the message.</p>
|
||||||
|
|
||||||
|
<pre><code class="language-php"><?php
|
||||||
|
// Send `204 No Content` status code.
|
||||||
|
http_response_code(204);
|
||||||
|
// collect data from post request
|
||||||
|
$data = file_get_contents('php://input');
|
||||||
|
if ($data = json_decode($data)) {
|
||||||
|
// Remove slashes from the JSON-formatted data.
|
||||||
|
$data = json_encode(
|
||||||
|
$data, JSON_UNESCAPED_SLASHES
|
||||||
|
);
|
||||||
|
# set options for syslog daemon
|
||||||
|
openlog('report-uri', LOG_NDELAY, LOG_USER);
|
||||||
|
|
||||||
|
# send warning about csp report
|
||||||
|
syslog(LOG_WARNING, $data);
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h2 id="nginx">Nginx</h2>
|
||||||
|
|
||||||
|
<p>I won’t go into too much details regarding the nginx configuration here as I’ve written on this subject before.</p>
|
||||||
|
|
||||||
|
<p>Since I now have a wildcard Let’s Encrypt certificate on captainark.net, I’ve decided to use a dedicated vhost for my report-uri. However, a subfolder would work just as well. Just make sure the script is stored in a folder that nginx can access.</p>
|
||||||
|
|
||||||
|
<p>I’ve also decided to call the script <code>index.php</code>. You can call it whatever you want, but your <code>report-uri</code> directive will have to match the full URL of the script (if I had named the script <code>report.php</code>, my <code>report-uri</code> would have been <code>https://report-uri.captainark.net/report.php</code> instead of <code>https://report-uri.captainark.net</code>).</p>
|
||||||
|
|
||||||
|
<p>A nginx location configured as follows should do the trick :</p>
|
||||||
|
|
||||||
|
<pre><code> location / {
|
||||||
|
index index.php;
|
||||||
|
|
||||||
|
location ~ \.php$ {
|
||||||
|
try_files $uri =404;
|
||||||
|
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
|
||||||
|
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
|
||||||
|
fastcgi_index index.php;
|
||||||
|
include fastcgi.conf;
|
||||||
|
fastcgi_hide_header X-Powered-By;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>I’ve omitted the security headers I usually configure in all locations here because they are outside of the scope of this article (HSTS, X-Frame-Options, etc.)</p>
|
||||||
|
|
||||||
|
<p>Once you’ve configured nginx, you can <code>nginx -t</code> to check that the syntax is correct, and <code>nginx -s reload</code> to reload the configuration.</p>
|
||||||
|
|
||||||
|
<h2 id="syslog-ng">Syslog-ng</h2>
|
||||||
|
|
||||||
|
<p>Now that our reports are being sent to syslog-ng, we need to log them as proprely formatted json messages, in a dedicated file.</p>
|
||||||
|
|
||||||
|
<p>I’ve created a <code>/etc/syslog-ng/conf.d/report-uri.conf</code> configuration file for that :</p>
|
||||||
|
|
||||||
|
<pre><code>filter f_report-uri { program ("report-uri"); };
|
||||||
|
destination d_report-uri { file ("/var/log/report-uri/report-uri.json" template("{\"@timestamp\": \"${ISODATE}\", \"host\": \"${HOST}\", \"message\": ${MSG} }\n")); };
|
||||||
|
log { source(s_src); filter (f_report-uri); destination (d_report-uri); flags(final); };
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>We’ll also need to create the folder for the logs :</p>
|
||||||
|
|
||||||
|
<pre><code>mkdir -m 0750 /var/log/report-uri
|
||||||
|
chown root:adm /var/log/report-uri
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>You can then reload syslog-ng with a <code>systemctl reload syslog-ng.service</code></p>
|
||||||
|
|
||||||
|
<p>Policy violation messages should now start to appear in the <code>/var/log/report-uri/report-uri.json</code></p>
|
||||||
|
|
||||||
|
<p>If you want to test that it’s working, you can create a <code>csp.json</code> file with the following content :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-json">{"csp-report":{"document-uri":"https://www.captainark.net/foo/bar","referrer":"https://www.google.com/","violated-directive":"default-src self","original-policy":"default-src self; report-uri https://report-uri.captainark.net","blocked-uri":"http://jscryptocurrency.cx"}}
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>You can now <code>POST</code> it to your report-uri :</p>
|
||||||
|
|
||||||
|
<pre><code>curl -XPOST https://report-uri.captainark.net -d @csp.json
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>The message should be added to your <code>report-uri.json</code> log file, and you should be able to prettify it with <code>jq</code> :</p>
|
||||||
|
|
||||||
|
<pre><code class="language-json">tail -n1 /var/log/report-uri/report-uri.json | jq
|
||||||
|
{
|
||||||
|
"@timestamp": "2018-11-27T22:57:06+01:00",
|
||||||
|
"host": "webserver",
|
||||||
|
"message": {
|
||||||
|
"csp-report": {
|
||||||
|
"document-uri": "https://www.captainark.net/foo/bar",
|
||||||
|
"referrer": "https://www.google.com/",
|
||||||
|
"violated-directive": "default-src self",
|
||||||
|
"original-policy": "default-src self; report-uri https://report-uri.captainark.net",
|
||||||
|
"blocked-uri": "http://jscryptocurrency.cx"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h2 id="logrotate">Logrotate</h2>
|
||||||
|
|
||||||
|
<p>It’s always a good idea to configure a log rotation when you add a new log file. To do so, let’s create the <code>/etc/logrotate.d/report-uri</code> file with the following content :</p>
|
||||||
|
|
||||||
|
<pre><code>/var/log/report-uri/report-uri.json {
|
||||||
|
rotate 8
|
||||||
|
weekly
|
||||||
|
notifempty
|
||||||
|
missingok
|
||||||
|
create 640 root adm
|
||||||
|
compress
|
||||||
|
copytruncate
|
||||||
|
}
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h2 id="conclusion">Conclusion</h2>
|
||||||
|
|
||||||
|
<p>This configuration works as a report-uri for the <code>Content-Security</code> header as well as the newer <code>Expect-CT</code> header, and any future header that uses a report-uri directive (as long as the generated messages are json formatted).</p>
|
||||||
|
|
||||||
|
<p>Having a log file instead of the clean web interface of <a href="https://report-uri.com/">Report URI</a> is not for everybody, but it is more than enough for my use case (this site gets like 10 clicks a day when I’m not playing with it so… yeah.)</p>
|
||||||
|
|
||||||
|
<p>Since the log messages are formatted in json, they should be pretty easy to integrate in <a href="https://www.elastic.co/">Elasticsearch</a> or <a href="https://www.graylog.org/">Graylog</a>. If I ever decide to configure one of those solutions, I should then be able to configure cool looking dashboards in Grafana as well.</p>
|
||||||
|
|
||||||
|
<p>As always, if you’ve found this article useful in any way, please let me know in the comments here, on <a href="https://twitter.com/captainark">Twitter</a> or on the <a href="https://social.captainark.net/users/captainark">Fediverse</a> if you’re a real cool kid !</p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="post-footer">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<figure class="author-image">
|
||||||
|
<a class="img" href="https://www.captainark.net/" style="background-image: url(/images/author.jpg)"><span class="hidden">Antoine Joubert's Picture</span></a>
|
||||||
|
</figure>
|
||||||
|
|
||||||
|
|
||||||
|
<section class="author">
|
||||||
|
<h4><a href="https://www.captainark.net/">Antoine Joubert</a></h4>
|
||||||
|
|
||||||
|
<p>Geek | Gamer | TV Shows Aficionado</p>
|
||||||
|
|
||||||
|
<div class="author-meta">
|
||||||
|
<span class="author-location icon-location">Angers, France</span>
|
||||||
|
<span class="author-link icon-link"><a href="https://www.captainark.net">https://www.captainark.net</a></span>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
|
||||||
|
<aside class="read-next">
|
||||||
|
|
||||||
|
<a class="read-next-story" style="no-cover" href="/2018/12/03/debian-repos-over-https/">
|
||||||
|
<section class="post">
|
||||||
|
<h2>Debian repos over HTTPS</h2>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="read-next-story prev" style="no-cover" href="/2018/04/14/dns-zone-versioning/">
|
||||||
|
<section class="post">
|
||||||
|
<h2>DNS zone versioning</h2>
|
||||||
|
</section>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<center>
|
||||||
|
<a class="fa-icons" href="mailto:contact@captainark.net">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-envelope fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://twitter.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://social.captainark.net/users/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-mastodon-alt fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://github.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.last.fm/user/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-lastfm fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://steamcommunity.com/id/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-steam fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.twitch.tv/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitch fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</center>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="site-footer clearfix">
|
||||||
|
<section class="copyright"><a href="">Sysadmining. All day. Every day.</a> © 2015 - 2019</section>
|
||||||
|
|
||||||
|
<section class="poweredby">Proudly generated by <a class="icon-hugo" href="http://gohugo.io">HUGO</a>, with <a class="icon-theme" href="https://github.com/vjeantet/hugo-theme-casper">Casper</a> theme</section>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript" src="/js/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/jquery.fitvids.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/index.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
416
public/2018/12/03/debian-repos-over-https/index.html
Normal file
@ -0,0 +1,416 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en-us">
|
||||||
|
<head>
|
||||||
|
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:card" content="summary"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:title" content="Debian repos over HTTPS"/>
|
||||||
|
<meta name="twitter:description" content=""/>
|
||||||
|
<meta name="twitter:site" content="@"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:title" content="Debian repos over HTTPS · Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:site_name" content="Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:url" content="https://www.captainark.net/2018/12/03/debian-repos-over-https/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:image" content="/images/cover.jpg"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:description" content="" />
|
||||||
|
<meta property="og:type" content="article" />
|
||||||
|
<meta property="article:published_time" content="2018-12-03T00:00:00+01:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<title>Debian repos over HTTPS · Sysadmining. All day. Every day.</title>
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="description" content="I&rsquo;ve been using deb.debian.org as the main debian repo on my servers pretty much since it&rsquo;s become available.
|
||||||
|
I&rsquo;ve recently realized that the " />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="HandheldFriendly" content="True" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="/images/favicon.ico">
|
||||||
|
<link rel="apple-touch-icon" href="/images/apple-touch-icon.png" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/screen.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/nav.css" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/solarized-light.min.css">
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js"></script>
|
||||||
|
|
||||||
|
<script>hljs.initHighlightingOnLoad();</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link href="/index.xml" rel="alternate" type="application/rss+xml" title="Sysadmining. All day. Every day." />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="generator" content="Hugo 0.53" />
|
||||||
|
|
||||||
|
<link rel="canonical" href="https://www.captainark.net/2018/12/03/debian-repos-over-https/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "Article",
|
||||||
|
"publisher": {
|
||||||
|
"@type": "Organization",
|
||||||
|
"name": ,
|
||||||
|
"logo": https://www.captainark.net/images/logo.png
|
||||||
|
},
|
||||||
|
"author": {
|
||||||
|
"@type": "Person",
|
||||||
|
"name": ,
|
||||||
|
|
||||||
|
"image": {
|
||||||
|
"@type": "ImageObject",
|
||||||
|
"url": https://www.captainark.net/images/author.jpg,
|
||||||
|
"width": 250,
|
||||||
|
"height": 250
|
||||||
|
},
|
||||||
|
|
||||||
|
"url": https://www.captainark.net,
|
||||||
|
"sameAs": [
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
],
|
||||||
|
"description": Geek | Gamer | TV Shows Aficionado
|
||||||
|
|
||||||
|
},
|
||||||
|
"headline": Debian repos over HTTPS,
|
||||||
|
"name": Debian repos over HTTPS,
|
||||||
|
"wordCount": 202,
|
||||||
|
"timeRequired": "PT1M",
|
||||||
|
"inLanguage": {
|
||||||
|
"@type": "Language",
|
||||||
|
"alternateName": en
|
||||||
|
},
|
||||||
|
"url": https://www.captainark.net/2018/12/03/debian-repos-over-https/,
|
||||||
|
"datePublished": 2018-12-03T00:00Z,
|
||||||
|
"dateModified": 2018-12-03T00:00Z,
|
||||||
|
|
||||||
|
|
||||||
|
"description": ,
|
||||||
|
"mainEntityOfPage": {
|
||||||
|
"@type": "WebPage",
|
||||||
|
"@id": https://www.captainark.net/2018/12/03/debian-repos-over-https/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
(function(f, a, t, h, o, m){
|
||||||
|
a[h]=a[h]||function(){
|
||||||
|
(a[h].q=a[h].q||[]).push(arguments)
|
||||||
|
};
|
||||||
|
o=f.createElement('script'),
|
||||||
|
m=f.getElementsByTagName('script')[0];
|
||||||
|
o.async=1; o.src=t; o.id='fathom-script';
|
||||||
|
m.parentNode.insertBefore(o,m)
|
||||||
|
})(document, window, '//stats.captainark.net/tracker.js', 'fathom');
|
||||||
|
fathom('set', 'siteId', 'GEWGL');
|
||||||
|
fathom('trackPageview');
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.1.5/css/fork-awesome.min.css" integrity="sha256-P64qV9gULPHiZTdrS1nM59toStkgjM0dsf5mK/UwBV4=" crossorigin="anonymous">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body class="nav-closed">
|
||||||
|
|
||||||
|
<div class="nav">
|
||||||
|
<h3 class="nav-title">Menu</h3>
|
||||||
|
<a href="#" class="nav-close">
|
||||||
|
<span class="hidden">Close</span>
|
||||||
|
</a>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h3>This site</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/about">About</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/resume">Resume</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<h3>Other services</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://git.captainark.net">Gitea</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://pics.captainark.net">Chevereto</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://paste.captainark.net">Privatebin</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://chat.captainark.net">Rocket.Chat</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="subscribe-button icon-feed" href="/index.xml">Subscribe</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<span class="nav-cover"></span>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="site-wrapper">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<header class="main-header post-head no-cover">
|
||||||
|
<nav class="main-nav clearfix">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a class="blog-logo" href="https://www.captainark.net/"><img src="/images/logo.png" alt="Home" /></a>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="menu-button" href="#"><span class="burger">☰</span><span class="word">Menu</span></a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<main class="content" role="main">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post post">
|
||||||
|
|
||||||
|
<header class="post-header">
|
||||||
|
<h1 class="post-title">Debian repos over HTTPS</h1>
|
||||||
|
<small></small>
|
||||||
|
|
||||||
|
<section class="post-meta">
|
||||||
|
|
||||||
|
<time class="post-date" datetime="2018-12-03T00:00:00+01:00">
|
||||||
|
03 December 2018
|
||||||
|
</time>
|
||||||
|
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<section class="post-content">
|
||||||
|
|
||||||
|
|
||||||
|
<p>I’ve been using <a href="https://deb.debian.org/">deb.debian.org</a> as the main debian repo on my servers pretty much since it’s become available.</p>
|
||||||
|
|
||||||
|
<p>I’ve recently realized that the service is available over HTTPS, and since I’m all about encrypting <em>all of the things</em>, I figured I’d configure it on my servers.</p>
|
||||||
|
|
||||||
|
<p>This is going to be a very short post on how to do the same.</p>
|
||||||
|
|
||||||
|
<h2 id="required-package">Required package</h2>
|
||||||
|
|
||||||
|
<p><code>apt</code> can’t use repositories available over https without installing a required package first.</p>
|
||||||
|
|
||||||
|
<pre><code>apt install apt-transport-https
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h2 id="the-source-list-file">The source.list file</h2>
|
||||||
|
|
||||||
|
<p>Once the package has been installed, you can edit your <code>/etc/apt/sources.list</code> file with the following content :</p>
|
||||||
|
|
||||||
|
<pre><code>deb https://deb.debian.org/debian stable main contrib non-free
|
||||||
|
deb https://deb.debian.org/debian-security stable/updates main contrib non-free
|
||||||
|
deb https://deb.debian.org/debian stable-updates main contrib non-free
|
||||||
|
deb https://deb.debian.org/debian stretch-backports main contrib non-free
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>Or, if you’d rather follow the <code>stretch</code> releases instead of <code>stable</code> (to avoid upgrading to <code>buster</code> until you’re ready once it will become the new <code>stable</code>) :</p>
|
||||||
|
|
||||||
|
<pre><code>deb https://deb.debian.org/debian stretch main contrib non-free
|
||||||
|
deb https://deb.debian.org/debian-security stretch/updates main contrib non-free
|
||||||
|
deb https://deb.debian.org/debian stretch-updates main contrib non-free
|
||||||
|
deb https://deb.debian.org/debian stretch-backports main contrib non-free
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h2 id="conclusion">Conclusion</h2>
|
||||||
|
|
||||||
|
<p>That’s all! As I said, this was going to be a short post.</p>
|
||||||
|
|
||||||
|
<p>As always, feel free to contact me here, on <a href="https://twitter.com/captainark">Twitter</a> or on the <a href="https://social.captainark.net/users/1">Fediverse</a>!</p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="post-footer">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<figure class="author-image">
|
||||||
|
<a class="img" href="https://www.captainark.net/" style="background-image: url(/images/author.jpg)"><span class="hidden">Antoine Joubert's Picture</span></a>
|
||||||
|
</figure>
|
||||||
|
|
||||||
|
|
||||||
|
<section class="author">
|
||||||
|
<h4><a href="https://www.captainark.net/">Antoine Joubert</a></h4>
|
||||||
|
|
||||||
|
<p>Geek | Gamer | TV Shows Aficionado</p>
|
||||||
|
|
||||||
|
<div class="author-meta">
|
||||||
|
<span class="author-location icon-location">Angers, France</span>
|
||||||
|
<span class="author-link icon-link"><a href="https://www.captainark.net">https://www.captainark.net</a></span>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
|
||||||
|
<aside class="read-next">
|
||||||
|
|
||||||
|
|
||||||
|
<a class="read-next-story prev" style="no-cover" href="/2018/11/27/self-hosted-report-uri/">
|
||||||
|
<section class="post">
|
||||||
|
<h2>Self-hosted report-uri</h2>
|
||||||
|
</section>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<center>
|
||||||
|
<a class="fa-icons" href="mailto:contact@captainark.net">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-envelope fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://twitter.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://social.captainark.net/users/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-mastodon-alt fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://github.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.last.fm/user/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-lastfm fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://steamcommunity.com/id/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-steam fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.twitch.tv/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitch fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</center>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="site-footer clearfix">
|
||||||
|
<section class="copyright"><a href="">Sysadmining. All day. Every day.</a> © 2015 - 2019</section>
|
||||||
|
|
||||||
|
<section class="poweredby">Proudly generated by <a class="icon-hugo" href="http://gohugo.io">HUGO</a>, with <a class="icon-theme" href="https://github.com/vjeantet/hugo-theme-casper">Casper</a> theme</section>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript" src="/js/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/jquery.fitvids.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/index.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
313
public/404.html
Normal file
@ -0,0 +1,313 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en-us">
|
||||||
|
<head>
|
||||||
|
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:card" content="summary"/>
|
||||||
|
|
||||||
|
<meta name="twitter:image" content="/images/cover.jpg"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:title" content="404 Page not found"/>
|
||||||
|
<meta name="twitter:description" content="Yet Another Blog about Linux and Networking"/>
|
||||||
|
<meta name="twitter:site" content="@"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:title" content="404 Page not found · Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:site_name" content="Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:url" content="" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:image" content="/images/cover.jpg"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:type" content="website" />
|
||||||
|
<meta property="og:description" content="Yet Another Blog about Linux and Networking" />
|
||||||
|
|
||||||
|
|
||||||
|
<title>404 Page not found · Sysadmining. All day. Every day.</title>
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="description" content="Yet Another Blog about Linux and Networking" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="HandheldFriendly" content="True" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="/images/favicon.ico">
|
||||||
|
<link rel="apple-touch-icon" href="/images/apple-touch-icon.png" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/screen.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/nav.css" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/solarized-light.min.css">
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js"></script>
|
||||||
|
|
||||||
|
<script>hljs.initHighlightingOnLoad();</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link href="/index.xml" rel="alternate" type="application/rss+xml" title="Sysadmining. All day. Every day." />
|
||||||
|
|
||||||
|
|
||||||
|
<link href="" rel="alternate" type="application/rss+xml" title="404 Page not found · Sysadmining. All day. Every day." />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="generator" content="Hugo 0.53" />
|
||||||
|
|
||||||
|
<link rel="canonical" href="" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "Website",
|
||||||
|
"publisher": {
|
||||||
|
"@type": "Person",
|
||||||
|
"name": ,
|
||||||
|
|
||||||
|
"image": {
|
||||||
|
"@type": "ImageObject",
|
||||||
|
"url": https://www.captainark.net/images/author.jpg,
|
||||||
|
"width": 250,
|
||||||
|
"height": 250
|
||||||
|
},
|
||||||
|
|
||||||
|
"url": https://www.captainark.net,
|
||||||
|
"sameAs": [
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
],
|
||||||
|
"description": Geek | Gamer | TV Shows Aficionado
|
||||||
|
|
||||||
|
},
|
||||||
|
"url": https://www.captainark.net/,
|
||||||
|
"mainEntityOfPage": {
|
||||||
|
"@type": "WebPage",
|
||||||
|
"@id": https://www.captainark.net/
|
||||||
|
},
|
||||||
|
"description": Yet Another Blog about Linux and Networking
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
(function(f, a, t, h, o, m){
|
||||||
|
a[h]=a[h]||function(){
|
||||||
|
(a[h].q=a[h].q||[]).push(arguments)
|
||||||
|
};
|
||||||
|
o=f.createElement('script'),
|
||||||
|
m=f.getElementsByTagName('script')[0];
|
||||||
|
o.async=1; o.src=t; o.id='fathom-script';
|
||||||
|
m.parentNode.insertBefore(o,m)
|
||||||
|
})(document, window, '//stats.captainark.net/tracker.js', 'fathom');
|
||||||
|
fathom('set', 'siteId', 'GEWGL');
|
||||||
|
fathom('trackPageview');
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.1.5/css/fork-awesome.min.css" integrity="sha256-P64qV9gULPHiZTdrS1nM59toStkgjM0dsf5mK/UwBV4=" crossorigin="anonymous">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body class="nav-closed">
|
||||||
|
|
||||||
|
<div class="nav">
|
||||||
|
<h3 class="nav-title">Menu</h3>
|
||||||
|
<a href="#" class="nav-close">
|
||||||
|
<span class="hidden">Close</span>
|
||||||
|
</a>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h3>This site</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/about">About</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/resume">Resume</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<h3>Other services</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://git.captainark.net">Gitea</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://pics.captainark.net">Chevereto</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://paste.captainark.net">Privatebin</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://chat.captainark.net">Rocket.Chat</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="subscribe-button icon-feed" href="">Subscribe</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<span class="nav-cover"></span>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="site-wrapper">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<header class="main-header " style="background-image: url(/images/cover.jpg)">
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="main-nav overlay clearfix">
|
||||||
|
|
||||||
|
<a class="blog-logo" href=""><img src="/images/logo.png" alt="Blog Logo" /></a>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="menu-button" href="#"><span class="burger">☰</span><span class="word">Menu</span></a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
<div class="vertical">
|
||||||
|
<div class="main-header-content inner">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h1 class="page-title">Sysadmining. All day. Every day.</h1>
|
||||||
|
<h2 class="page-description">Yet Another Blog about Linux and Networking</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<a class="scroll-down icon-arrow-left" href="#content"><span class="hidden">Scroll Down</span></a>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
<main id="content" class="content" role="main">
|
||||||
|
|
||||||
|
<article class="post">
|
||||||
|
<h1>404 Not Found</h1>
|
||||||
|
<p>Sorry, but we couldn't find the page you're looking for.</p>
|
||||||
|
<p>Please head back <a href="/">home</a>.</p>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
<center>
|
||||||
|
<a class="fa-icons" href="mailto:contact@captainark.net">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-envelope fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://twitter.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://social.captainark.net/users/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-mastodon-alt fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://github.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.last.fm/user/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-lastfm fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://steamcommunity.com/id/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-steam fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.twitch.tv/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitch fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</center>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="site-footer clearfix">
|
||||||
|
<section class="copyright"><a href="">Sysadmining. All day. Every day.</a> © 2015 - 2019</section>
|
||||||
|
|
||||||
|
<section class="poweredby">Proudly generated by <a class="icon-hugo" href="http://gohugo.io">HUGO</a>, with <a class="icon-theme" href="https://github.com/vjeantet/hugo-theme-casper">Casper</a> theme</section>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript" src="/js/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/jquery.fitvids.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/index.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
419
public/about/index.html
Normal file
@ -0,0 +1,419 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en-us">
|
||||||
|
<head>
|
||||||
|
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:card" content="summary"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:title" content="About"/>
|
||||||
|
<meta name="twitter:description" content=""/>
|
||||||
|
<meta name="twitter:site" content="@"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:title" content="About · Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:site_name" content="Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:url" content="https://www.captainark.net/about/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:image" content="/images/cover.jpg"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:description" content="" />
|
||||||
|
<meta property="og:type" content="article" />
|
||||||
|
<meta property="article:published_time" content="2019-01-06T12:20:50+01:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<title>About · Sysadmining. All day. Every day.</title>
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="description" content="My blog." />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="HandheldFriendly" content="True" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="/images/favicon.ico">
|
||||||
|
<link rel="apple-touch-icon" href="/images/apple-touch-icon.png" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/screen.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/nav.css" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/solarized-light.min.css">
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js"></script>
|
||||||
|
|
||||||
|
<script>hljs.initHighlightingOnLoad();</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link href="/index.xml" rel="alternate" type="application/rss+xml" title="Sysadmining. All day. Every day." />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="generator" content="Hugo 0.53" />
|
||||||
|
|
||||||
|
<link rel="canonical" href="https://www.captainark.net/about/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "Article",
|
||||||
|
"publisher": {
|
||||||
|
"@type": "Organization",
|
||||||
|
"name": ,
|
||||||
|
"logo": https://www.captainark.net/images/logo.png
|
||||||
|
},
|
||||||
|
"author": {
|
||||||
|
"@type": "Person",
|
||||||
|
"name": ,
|
||||||
|
|
||||||
|
"image": {
|
||||||
|
"@type": "ImageObject",
|
||||||
|
"url": https://www.captainark.net/images/author.jpg,
|
||||||
|
"width": 250,
|
||||||
|
"height": 250
|
||||||
|
},
|
||||||
|
|
||||||
|
"url": https://www.captainark.net,
|
||||||
|
"sameAs": [
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
],
|
||||||
|
"description": Geek | Gamer | TV Shows Aficionado
|
||||||
|
|
||||||
|
},
|
||||||
|
"headline": About,
|
||||||
|
"name": About,
|
||||||
|
"wordCount": 2,
|
||||||
|
"timeRequired": "PT1M",
|
||||||
|
"inLanguage": {
|
||||||
|
"@type": "Language",
|
||||||
|
"alternateName": en
|
||||||
|
},
|
||||||
|
"url": https://www.captainark.net/about/,
|
||||||
|
"datePublished": 2019-01-06T12:20Z,
|
||||||
|
"dateModified": 2019-01-06T12:20Z,
|
||||||
|
|
||||||
|
|
||||||
|
"description": ,
|
||||||
|
"mainEntityOfPage": {
|
||||||
|
"@type": "WebPage",
|
||||||
|
"@id": https://www.captainark.net/about/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
(function(f, a, t, h, o, m){
|
||||||
|
a[h]=a[h]||function(){
|
||||||
|
(a[h].q=a[h].q||[]).push(arguments)
|
||||||
|
};
|
||||||
|
o=f.createElement('script'),
|
||||||
|
m=f.getElementsByTagName('script')[0];
|
||||||
|
o.async=1; o.src=t; o.id='fathom-script';
|
||||||
|
m.parentNode.insertBefore(o,m)
|
||||||
|
})(document, window, '//stats.captainark.net/tracker.js', 'fathom');
|
||||||
|
fathom('set', 'siteId', 'GEWGL');
|
||||||
|
fathom('trackPageview');
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.1.5/css/fork-awesome.min.css" integrity="sha256-P64qV9gULPHiZTdrS1nM59toStkgjM0dsf5mK/UwBV4=" crossorigin="anonymous">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body class="nav-closed">
|
||||||
|
|
||||||
|
<div class="nav">
|
||||||
|
<h3 class="nav-title">Menu</h3>
|
||||||
|
<a href="#" class="nav-close">
|
||||||
|
<span class="hidden">Close</span>
|
||||||
|
</a>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h3>This site</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/about">About</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/resume">Resume</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<h3>Other services</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://git.captainark.net">Gitea</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://pics.captainark.net">Chevereto</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://paste.captainark.net">Privatebin</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://chat.captainark.net">Rocket.Chat</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="subscribe-button icon-feed" href="/index.xml">Subscribe</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<span class="nav-cover"></span>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="site-wrapper">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<header class="main-header post-head no-cover">
|
||||||
|
<nav class="main-nav overlay clearfix">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a class="blog-logo" href="https://www.captainark.net/"><img src="/images/logo.png" alt="Home" /></a>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="menu-button" href="#"><span class="burger">☰</span><span class="word">Menu</span></a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<main class="content" role="main">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post ">
|
||||||
|
<header class="post-header">
|
||||||
|
<nav class="breadcrumb">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
|
||||||
|
<h1 class="post-title">About</h1>
|
||||||
|
<small></small>
|
||||||
|
|
||||||
|
<section class="post-meta">
|
||||||
|
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<section class="post-content">
|
||||||
|
|
||||||
|
|
||||||
|
<p>My blog.</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="post-footer">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<figure class="author-image">
|
||||||
|
<a class="img" href="https://www.captainark.net/" style="background-image: url(/images/author.jpg)"><span class="hidden">Antoine Joubert's Picture</span></a>
|
||||||
|
</figure>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<figure class="author-image">
|
||||||
|
<a class="img" href="https://www.captainark.net/" style="background-image: url(/images/author.jpg)"><span class="hidden">Antoine Joubert's Picture</span></a>
|
||||||
|
</figure>
|
||||||
|
|
||||||
|
|
||||||
|
<section class="author">
|
||||||
|
<h4><a href="https://www.captainark.net/">Antoine Joubert</a></h4>
|
||||||
|
|
||||||
|
<p>Geek | Gamer | TV Shows Aficionado</p>
|
||||||
|
|
||||||
|
<div class="author-meta">
|
||||||
|
<span class="author-location icon-location">Angers, France</span>
|
||||||
|
<span class="author-link icon-link"><a href="https://www.captainark.net">https://www.captainark.net</a></span>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- isso -->
|
||||||
|
<script data-isso="https://www.captainark.net/comments/" src="https://www.captainark.net/comments/js/embed.min.js"></script>
|
||||||
|
<noscript>Please enable JavaScript to view comments</noscript>
|
||||||
|
<section id="isso-thread"></section>
|
||||||
|
<!-- end isso -->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<aside class="read-next">
|
||||||
|
|
||||||
|
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<center>
|
||||||
|
<a class="fa-icons" href="mailto:contact@captainark.net">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-envelope fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://twitter.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://social.captainark.net/users/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-mastodon-alt fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://github.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.last.fm/user/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-lastfm fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://steamcommunity.com/id/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-steam fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.twitch.tv/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitch fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</center>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="site-footer clearfix">
|
||||||
|
<section class="copyright"><a href="">Sysadmining. All day. Every day.</a> © 2015 - 2019</section>
|
||||||
|
|
||||||
|
<section class="poweredby">Proudly generated by <a class="icon-hugo" href="http://gohugo.io">HUGO</a>, with <a class="icon-theme" href="https://github.com/vjeantet/hugo-theme-casper">Casper</a> theme</section>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript" src="/js/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/jquery.fitvids.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/index.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
304
public/categories/index.html
Normal file
@ -0,0 +1,304 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en-us">
|
||||||
|
<head>
|
||||||
|
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:card" content="summary"/>
|
||||||
|
|
||||||
|
<meta name="twitter:image" content="/images/cover.jpg"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:title" content="Categories"/>
|
||||||
|
<meta name="twitter:description" content="Yet Another Blog about Linux and Networking"/>
|
||||||
|
<meta name="twitter:site" content="@"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:title" content="Categories · Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:site_name" content="Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:url" content="https://www.captainark.net/categories/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:image" content="/images/cover.jpg"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:type" content="website" />
|
||||||
|
<meta property="og:description" content="Yet Another Blog about Linux and Networking" />
|
||||||
|
|
||||||
|
|
||||||
|
<title>Categories · Sysadmining. All day. Every day.</title>
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="description" content="Yet Another Blog about Linux and Networking" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="HandheldFriendly" content="True" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="/images/favicon.ico">
|
||||||
|
<link rel="apple-touch-icon" href="/images/apple-touch-icon.png" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/screen.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/nav.css" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/solarized-light.min.css">
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js"></script>
|
||||||
|
|
||||||
|
<script>hljs.initHighlightingOnLoad();</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link href="/index.xml" rel="alternate" type="application/rss+xml" title="Sysadmining. All day. Every day." />
|
||||||
|
|
||||||
|
|
||||||
|
<link href="https://www.captainark.net/categories/index.xml" rel="alternate" type="application/rss+xml" title="Categories · Sysadmining. All day. Every day." />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="generator" content="Hugo 0.53" />
|
||||||
|
|
||||||
|
<link rel="canonical" href="https://www.captainark.net/categories/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "Website",
|
||||||
|
"publisher": {
|
||||||
|
"@type": "Person",
|
||||||
|
"name": ,
|
||||||
|
|
||||||
|
"image": {
|
||||||
|
"@type": "ImageObject",
|
||||||
|
"url": https://www.captainark.net/images/author.jpg,
|
||||||
|
"width": 250,
|
||||||
|
"height": 250
|
||||||
|
},
|
||||||
|
|
||||||
|
"url": https://www.captainark.net,
|
||||||
|
"sameAs": [
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
],
|
||||||
|
"description": Geek | Gamer | TV Shows Aficionado
|
||||||
|
|
||||||
|
},
|
||||||
|
"url": https://www.captainark.net/,
|
||||||
|
"mainEntityOfPage": {
|
||||||
|
"@type": "WebPage",
|
||||||
|
"@id": https://www.captainark.net/
|
||||||
|
},
|
||||||
|
"description": Yet Another Blog about Linux and Networking
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
(function(f, a, t, h, o, m){
|
||||||
|
a[h]=a[h]||function(){
|
||||||
|
(a[h].q=a[h].q||[]).push(arguments)
|
||||||
|
};
|
||||||
|
o=f.createElement('script'),
|
||||||
|
m=f.getElementsByTagName('script')[0];
|
||||||
|
o.async=1; o.src=t; o.id='fathom-script';
|
||||||
|
m.parentNode.insertBefore(o,m)
|
||||||
|
})(document, window, '//stats.captainark.net/tracker.js', 'fathom');
|
||||||
|
fathom('set', 'siteId', 'GEWGL');
|
||||||
|
fathom('trackPageview');
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.1.5/css/fork-awesome.min.css" integrity="sha256-P64qV9gULPHiZTdrS1nM59toStkgjM0dsf5mK/UwBV4=" crossorigin="anonymous">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body class="nav-closed">
|
||||||
|
|
||||||
|
<div class="nav">
|
||||||
|
<h3 class="nav-title">Menu</h3>
|
||||||
|
<a href="#" class="nav-close">
|
||||||
|
<span class="hidden">Close</span>
|
||||||
|
</a>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h3>This site</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/about">About</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/resume">Resume</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<h3>Other services</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://git.captainark.net">Gitea</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://pics.captainark.net">Chevereto</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://paste.captainark.net">Privatebin</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://chat.captainark.net">Rocket.Chat</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="subscribe-button icon-feed" href="https://www.captainark.net/categories/index.xml">Subscribe</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<span class="nav-cover"></span>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="site-wrapper">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<header class="main-header tag-head" style="background-image: url(/images/cover.jpg)">
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="main-nav overlay clearfix">
|
||||||
|
|
||||||
|
<a class="blog-logo" href="https://www.captainark.net/"><img src="/images/logo.png" alt="Home" /></a>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="menu-button" href="#"><span class="burger">☰</span><span class="word">Menu</span></a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
<div class="vertical">
|
||||||
|
<div class="main-header-content inner">
|
||||||
|
<h1 class="page-title">Categories</h1>
|
||||||
|
<h2 class="page-description">
|
||||||
|
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<main class="content" role="main">
|
||||||
|
|
||||||
|
|
||||||
|
<div class="extra-pagination inner">
|
||||||
|
<nav class="pagination" role="navigation">
|
||||||
|
|
||||||
|
<span class="page-number">Page 1 of 0</span>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="pagination" role="navigation">
|
||||||
|
|
||||||
|
<span class="page-number">Page 1 of 0</span>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<center>
|
||||||
|
<a class="fa-icons" href="mailto:contact@captainark.net">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-envelope fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://twitter.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://social.captainark.net/users/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-mastodon-alt fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://github.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.last.fm/user/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-lastfm fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://steamcommunity.com/id/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-steam fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.twitch.tv/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitch fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</center>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="site-footer clearfix">
|
||||||
|
<section class="copyright"><a href="">Sysadmining. All day. Every day.</a> © 2015 - 2019</section>
|
||||||
|
|
||||||
|
<section class="poweredby">Proudly generated by <a class="icon-hugo" href="http://gohugo.io">HUGO</a>, with <a class="icon-theme" href="https://github.com/vjeantet/hugo-theme-casper">Casper</a> theme</section>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript" src="/js/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/jquery.fitvids.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/index.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
15
public/categories/index.xml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||||
|
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||||
|
<channel>
|
||||||
|
<title>Categories on Sysadmining. All day. Every day.</title>
|
||||||
|
<link>https://www.captainark.net/categories/</link>
|
||||||
|
<description>Recent content in Categories on Sysadmining. All day. Every day.</description>
|
||||||
|
<generator>Hugo -- gohugo.io</generator>
|
||||||
|
<language>en-us</language>
|
||||||
|
<copyright>© 2015 - 2019</copyright>
|
||||||
|
|
||||||
|
<atom:link href="https://www.captainark.net/categories/index.xml" rel="self" type="application/rss+xml" />
|
||||||
|
|
||||||
|
|
||||||
|
</channel>
|
||||||
|
</rss>
|
1
public/categories/page/1/index.html
Normal file
@ -0,0 +1 @@
|
|||||||
|
<!DOCTYPE html><html><head><title>https://www.captainark.net/categories/</title><link rel="canonical" href="https://www.captainark.net/categories/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://www.captainark.net/categories/" /></head></html>
|
108
public/css/nav.css
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
nav.breadcrumb{
|
||||||
|
margin-bottom:0px;
|
||||||
|
}
|
||||||
|
nav.breadcrumb li {
|
||||||
|
display: inline ;
|
||||||
|
font-size: 14px;
|
||||||
|
font-family: helvetica;
|
||||||
|
}
|
||||||
|
nav.breadcrumb li a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
nav.breadcrumb li a:after {
|
||||||
|
content: " >";
|
||||||
|
}
|
||||||
|
|
||||||
|
nav.navpage {
|
||||||
|
font-size: 1em;
|
||||||
|
font-family: helvetica;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
nav.navpage > ul {
|
||||||
|
background: #efefef;
|
||||||
|
background: linear-gradient(top, #efefef 0%, #bbbbbb 100%);
|
||||||
|
background: -moz-linear-gradient(top, #efefef 0%, #bbbbbb 100%);
|
||||||
|
background: -webkit-linear-gradient(top, #efefef 0%,#bbbbbb 100%);
|
||||||
|
box-shadow: 0px 0px 90px rgba(0,0,0,0.15);
|
||||||
|
padding: 0 20px;
|
||||||
|
border-radius: 10px;
|
||||||
|
list-style: none;
|
||||||
|
position: relative;
|
||||||
|
display: inline-table;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
nav.navpage li {
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav.navpage:after {
|
||||||
|
content: ""; clear: both; display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav.navpage > ul > li > a {
|
||||||
|
font-weight: bold;
|
||||||
|
text-decoration: none;
|
||||||
|
font-size: 1.2em;
|
||||||
|
font-variant: small-caps;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
nav.navpage ul {
|
||||||
|
padding-left: 0px;
|
||||||
|
margin-left: 0px;
|
||||||
|
}
|
||||||
|
nav.navpage ul ul li {
|
||||||
|
display: block;
|
||||||
|
margin-left: 30px;
|
||||||
|
line-height: 1.2em;
|
||||||
|
}
|
||||||
|
nav.navpage ul ul li a {
|
||||||
|
text-decoration: none
|
||||||
|
}
|
||||||
|
nav.navpage ul ul li a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
nav.navpage ul ul li:after {
|
||||||
|
content: "";
|
||||||
|
}
|
||||||
|
|
||||||
|
nav.navpage ul ul li ul li{
|
||||||
|
display: block;
|
||||||
|
font-size: smaller;
|
||||||
|
margin-left: 30px;
|
||||||
|
line-height: 1.1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav.navchildren{
|
||||||
|
margin-top: 0px;
|
||||||
|
background: #efefef;
|
||||||
|
background: linear-gradient(top, #efefef 0%, #bbbbbb 100%);
|
||||||
|
background: -moz-linear-gradient(top, #efefef 0%, #bbbbbb 100%);
|
||||||
|
background: -webkit-linear-gradient(top, #efefef 0%,#bbbbbb 100%);
|
||||||
|
box-shadow: 0px 0px 90px rgba(0,0,0,0.15);
|
||||||
|
padding: 0 20px;
|
||||||
|
border-radius: 10px;
|
||||||
|
list-style: none;
|
||||||
|
position: relative;
|
||||||
|
display: inline-table;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav.navchildren li {
|
||||||
|
font-size: smaller;
|
||||||
|
line-height: 1.1em;
|
||||||
|
font-family: helvetica;
|
||||||
|
/*display: block;*/
|
||||||
|
|
||||||
|
}
|
||||||
|
nav.navchildren a {
|
||||||
|
|
||||||
|
line-height: 1.1em;
|
||||||
|
|
||||||
|
text-decoration: none
|
||||||
|
}
|
||||||
|
nav.navchildren a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
2152
public/css/screen.css
Normal file
1
public/favicon.ico
Normal file
@ -0,0 +1 @@
|
|||||||
|
Found. Redirecting to /favicon.png
|
BIN
public/favicon.png
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
public/fonts/Genericons/Genericons.eot
Normal file
543
public/fonts/Genericons/Genericons.svg
Normal file
@ -0,0 +1,543 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||||
|
<!--
|
||||||
|
2014-10-3: Created.
|
||||||
|
-->
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<metadata>
|
||||||
|
Created by FontForge 20120731 at Fri Oct 3 09:39:07 2014
|
||||||
|
By Joen
|
||||||
|
Created by Joen with FontForge 2.0 (http://fontforge.sf.net)
|
||||||
|
</metadata>
|
||||||
|
<defs>
|
||||||
|
<font id="Genericons" horiz-adv-x="2048" >
|
||||||
|
<font-face
|
||||||
|
font-family="Genericons"
|
||||||
|
font-weight="500"
|
||||||
|
font-stretch="normal"
|
||||||
|
units-per-em="2048"
|
||||||
|
panose-1="2 0 6 9 0 0 0 0 0 0"
|
||||||
|
ascent="2048"
|
||||||
|
descent="0"
|
||||||
|
bbox="-0.0140489 0 2048.01 2048"
|
||||||
|
underline-thickness="102.4"
|
||||||
|
underline-position="-204.8"
|
||||||
|
unicode-range="U+F100-F517"
|
||||||
|
/>
|
||||||
|
<missing-glyph />
|
||||||
|
<glyph glyph-name="uniF413" unicode=""
|
||||||
|
d="M256 1280c565.504 0 1024 -458.496 1024 -1024h-256c0 423.552 -344.448 768 -768 768v256zM256 1792c848.256 0 1536 -687.744 1536 -1536h-256c0 705.792 -574.208 1280 -1280 1280v256zM448 640c106.112 0 192 -86.0156 192 -192s-85.8877 -192 -192 -192
|
||||||
|
s-192 86.0156 -192 192s85.8877 192 192 192z" />
|
||||||
|
<glyph glyph-name="uniF462" unicode=""
|
||||||
|
d="M618.502 1337l-213.004 142.004l-303.335 -455.002l303.335 -455.002l213.004 142.004l-208.665 312.998zM1642.5 1479l-213.004 -142.004l208.665 -312.998l-208.665 -312.998l213.004 -142.004l303.335 455.002zM771.821 543.045l248.357 -62.0898l256 1024
|
||||||
|
l-248.357 62.0898z" />
|
||||||
|
<glyph glyph-name="uniF457" unicode=""
|
||||||
|
d="M1024 1792c424.064 0 768 -343.936 768 -768s-343.936 -768 -768 -768c-424.192 0 -768 343.936 -768 768s343.808 768 768 768zM1024 512c70.6562 0 128 57.4717 128 128s-57.3438 128 -128 128c-70.7842 0 -128 -57.4717 -128 -128s57.2158 -128 128 -128z
|
||||||
|
M1342.72 1155.84c24.832 38.9121 37.248 85.1201 37.1201 138.752c0 74.4961 -27.6475 133.504 -83.7119 176.641c-55.9355 43.2637 -133.632 64.7676 -231.936 64.7676c-119.809 0 -234.496 -31.2324 -344.32 -93.9521l91.9043 -180.096
|
||||||
|
c89.2158 47.2314 167.168 70.9121 233.983 70.9121c26.752 0 48.5127 -5.37598 65.2803 -16.2559c17.2803 -10.752 25.4717 -25.4727 25.4717 -44.0322c0 -23.2959 -8.06348 -44.0322 -23.5518 -62.208c-16 -18.0479 -41.4717 -38.4004 -77.1836 -60.9277
|
||||||
|
c-45.1846 -28.1602 -76.416 -57.0889 -94.3359 -87.04c-17.5361 -29.6963 -26.3682 -66.4326 -26.3682 -109.44v-56.96h203.647v34.0479c0 18.6885 5.50391 35.2002 17.2803 48.8965c12.0322 14.0801 40.96 36.0957 86.9121 66.0479
|
||||||
|
c55.04 34.8154 94.5918 71.6797 119.808 110.848z" />
|
||||||
|
<glyph glyph-name="uniF403" unicode=""
|
||||||
|
d="M1541.38 1530.62l506.624 -506.624l-506.624 -506.624c-131.456 -134.272 -314.752 -217.728 -517.376 -217.728c-202.752 0 -386.048 83.4551 -517.504 217.983l-506.496 506.368v0l506.496 506.496c131.456 134.4 314.624 217.984 517.504 217.984
|
||||||
|
c202.752 0 385.92 -83.584 517.376 -217.856zM1404.42 651.776l372.096 372.224l-370.943 370.944c-102.528 104.704 -237.568 161.536 -381.568 161.536c-144.128 0 -279.168 -56.9609 -380.288 -160.385l-372.096 -372.096l370.688 -370.56
|
||||||
|
c102.528 -104.96 237.696 -161.792 381.824 -161.792c144 0 279.168 56.832 380.288 160.128zM1408 1024zM640 1024c0 212.096 172.032 384 384 384s384 -171.904 384 -384c0 -211.968 -172.032 -384 -384 -384s-384 172.032 -384 384zM768 1152
|
||||||
|
c0 -70.6562 57.2158 -128 128 -128c70.6562 0 128 57.3438 128 128s-57.3438 128 -128 128c-70.7842 0 -128 -57.3438 -128 -128z" />
|
||||||
|
<glyph glyph-name="uniF505" unicode=""
|
||||||
|
d="M256 1408v256h256v-256h-256zM768 1664h1024v-256h-1024v256zM256 896v256h256v-256h-256zM1408 1152v-256h-640v256h640zM256 384v256h256v-256h-256zM768 384v256h896v-256h-896z" />
|
||||||
|
<glyph glyph-name="uniF50F" unicode=""
|
||||||
|
d="M1920 1024l-384 -384v256h-384v-384h256l-384 -384l-384 384h256v384h-384v-256l-384 384l384 384v-256h384v384h-256l384 384l384 -384h-256v-384h384v256z" />
|
||||||
|
<glyph glyph-name="uniF307" unicode=""
|
||||||
|
d="M768 640v128h128v-128h-128zM768 896v128h128v-128h-128zM768 1152v128h128v-128h-128zM512 640v128h128v-128h-128zM512 896v128h128v-128h-128zM1280 896v128h128v-128h-128zM1024 1152v128h128v-128h-128zM1280 1152v128h128v-128h-128zM1408 1664h256v-1280h-1408
|
||||||
|
v1280h256v128h128v-128h640v128h128v-128zM1536 640v640c0 70.7842 -57.2158 128 -128 128h-896c-70.6562 0 -128 -57.2158 -128 -128v-640c0 -70.7842 57.3438 -128 128 -128h896c70.7842 0 128 57.2158 128 128zM1024 896v128h128v-128h-128zM1024 640v128h128v-128h-128z
|
||||||
|
" />
|
||||||
|
<glyph glyph-name="uniF460" unicode=""
|
||||||
|
d="M1664 1280h128l-256 -768h-768l256 768h128l86.2725 256h339.455zM1300.86 1280h214.271l-43.1357 128h-128zM809.728 1536l86.2725 -256l-256 -768h-128l-256 768h128l86.2725 256h339.455zM532.864 1280h214.271l-43.1357 128h-128z" />
|
||||||
|
<glyph glyph-name="uniF430" unicode=""
|
||||||
|
d="M1024 1453.31l86.6562 -86.6553l-342.656 -342.656h896v-128h-896l342.656 -342.656l-86.6562 -86.6553l-493.312 493.312z" />
|
||||||
|
<glyph glyph-name="uniF515" unicode=""
|
||||||
|
d="M1024 1920c494.848 0 896 -401.152 896 -896s-401.152 -896 -896 -896s-896 401.152 -896 896s401.152 896 896 896zM1387.52 601.216c29.4404 0 55.6807 23.6807 55.8086 56.0645c0 33.1514 -13.0557 46.4639 -35.4561 59.5195
|
||||||
|
c-150.4 90.1123 -325.12 135.168 -521.216 135.168c-114.433 0 -224.769 -14.4639 -335.36 -39.6797c-27.1357 -5.12012 -48.7676 -23.8076 -48.7676 -61.4404c0 -29.1836 22.6553 -56.3193 56.7041 -56.3193c11.0078 0 29.4395 5.75977 44.1592 8.83203
|
||||||
|
c90.2402 18.6875 186.752 30.9756 282.624 30.9756c171.776 0 333.696 -41.3438 463.616 -119.808c13.5684 -8.32031 23.4238 -13.3125 37.8877 -13.3125zM1485.18 838.4c38.9121 0 69.7607 31.3594 69.8887 70.0156c0 31.8721 -11.0078 53.6318 -40.832 70.7842
|
||||||
|
c-178.433 106.752 -405.376 165.12 -639.872 165.12c-149.76 0 -252.544 -21.248 -353.28 -48.8965c-37.248 -10.624 -55.6797 -36.7354 -55.6797 -74.8799c0 -38.7842 31.3594 -70.1436 69.8877 -70.1436c16.3838 0 26.1123 5.11914 43.5205 10.1113
|
||||||
|
c81.1514 21.5039 179.071 37.376 292.479 37.376c221.185 0 423.168 -57.4717 568.96 -144c13.3125 -7.55176 25.6006 -15.4873 44.9277 -15.4873zM1596.29 1114.24c45.3115 0 84.6084 35.0713 84.3516 83.8398c0 42.752 -18.9434 66.0479 -46.208 81.4082
|
||||||
|
c-202.111 118.912 -478.976 172.928 -742.016 172.928c-155.008 0 -297.472 -17.5361 -425.216 -55.168c-32.5117 -9.59961 -62.7197 -36.9922 -62.7197 -85.6318c0 -47.8721 36.7354 -85.6318 84.4795 -85.6318c16.5117 0 33.0244 6.39941 46.0801 9.72754
|
||||||
|
c113.024 30.5918 236.416 43.0078 357.888 43.0078c243.328 0 495.104 -53.5039 657.28 -150.784c17.0244 -9.34375 27.7764 -13.6953 46.0801 -13.6953z" />
|
||||||
|
<glyph glyph-name="uniF448" unicode=""
|
||||||
|
d="M512 384v1280h384v-1280h-384zM1152 1664h384v-1280h-384v1280z" />
|
||||||
|
<glyph glyph-name="uniF453" unicode=""
|
||||||
|
d="M1536 2048c141.312 0 256 -114.688 256 -256v-1536c0 -141.312 -114.688 -256 -256 -256h-1024c-141.312 0 -256 114.688 -256 256v1536c0 141.312 114.688 256 256 256h1024zM1024 128c70.7842 0 128 57.2158 128 128s-57.2158 128 -128 128
|
||||||
|
c-70.6562 0 -128 -57.2158 -128 -128s57.3438 -128 128 -128zM1536 512v1280h-1024v-1280h1024z" />
|
||||||
|
<glyph glyph-name="uniF419" unicode=""
|
||||||
|
d="M0 256v256h2048v-256h-2048zM0 1792h2048v-256h-2048v256zM0 896v256h2048v-256h-2048z" />
|
||||||
|
<glyph glyph-name="uniF423" unicode=""
|
||||||
|
d="M567.936 1440.9l-267.136 -480.896h403.2v-384h-128v256h-492.8l372.864 671.104zM1644.8 960h403.2v-384h-128v256h-492.8l372.864 671.104l112 -62.207zM1088 1344c176.768 0 320 -143.232 320 -320s-143.232 -320 -320 -320s-320 143.232 -320 320
|
||||||
|
s143.232 320 320 320zM1088 832c105.856 0 192 86.1436 192 192s-86.1436 192 -192 192s-192 -86.1436 -192 -192s86.1436 -192 192 -192z" />
|
||||||
|
<glyph glyph-name="uniF512" unicode=""
|
||||||
|
d="M1920 1280l-555.136 -387.968l212.863 -636.032l-553.728 394.496l-553.728 -394.496l212.991 636.032l-555.264 387.968h685.312l210.688 640l210.688 -640h685.312z" />
|
||||||
|
<glyph glyph-name="uniF417" unicode=""
|
||||||
|
d="M960 1792c318.08 0 576 -257.92 576 -576c0 -159.232 -64.6396 -303.36 -169.088 -407.68l-406.912 -407.04l-406.912 407.04c-104.448 104.319 -169.088 248.447 -169.088 407.68c0 318.08 257.92 576 576 576zM960 896c176.64 0 320 143.36 320 320
|
||||||
|
s-143.36 320 -320 320c-176.768 0 -320 -143.36 -320 -320s143.232 -320 320 -320z" />
|
||||||
|
<glyph glyph-name="uniF410" unicode=""
|
||||||
|
d="M256 1536h1536v-128l-768 -384l-768 384v128zM256 1216l768 -384l768 384v-704h-1536v704z" />
|
||||||
|
<glyph glyph-name="uniF449" unicode=""
|
||||||
|
d="M512 512v1024h1024v-1024h-1024z" />
|
||||||
|
<glyph glyph-name="uniF467" unicode=""
|
||||||
|
d="M1280 1280c282.752 0 512 -229.248 512 -512v-299.904l-150.016 149.889c-99.9688 99.9678 -231.04 150.016 -361.984 150.016h-256v-384l-640 640l640 640v-384h256z" />
|
||||||
|
<glyph glyph-name="uniF224" unicode=""
|
||||||
|
d="M1536 1792c141.312 0 256 -114.688 256 -256v-384c0 -424.064 -343.936 -768 -768 -768s-768 343.936 -768 768v384c0 141.312 114.688 256 256 256h1024zM1498.5 1189.5c50.0479 50.0479 50.0479 131.072 0 180.992c-50.0479 50.0479 -130.944 50.0479 -180.992 0
|
||||||
|
l-293.504 -293.504l-293.504 293.504c-50.0479 50.0479 -131.072 50.0479 -180.992 0c-50.0479 -49.9199 -50.0479 -130.944 0 -180.992l361.984 -361.984l4.22363 4.22461c22.4004 -37.376 61.5684 -63.7441 108.288 -63.7441s85.8877 26.3682 108.288 63.7441
|
||||||
|
l4.22363 -4.22461z" />
|
||||||
|
<glyph glyph-name="uniF203" unicode=""
|
||||||
|
d="M1664 1920c141.312 0 256 -114.688 256 -256v-1280c0 -141.312 -114.688 -256 -256 -256h-281.856v711.168h269.44l12.416 259.456h-281.984v192.384v0.255859v12.0322c0 71.2959 15.2324 114.432 108.544 114.432c86.6562 0 166.017 -0.639648 166.017 -0.639648
|
||||||
|
l5.8877 242.304s-77.6963 9.98438 -182.528 9.98438c-259.584 0 -372.096 -159.872 -372.096 -333.952v-236.8h-254.336v-259.328h254.336v-711.296h-723.84c-141.312 0 -256 114.688 -256 256v1280c0 141.312 114.688 256 256 256h1280z" />
|
||||||
|
<glyph glyph-name="uniF502" unicode=""
|
||||||
|
d="M128 2048h1920l-960 -960z" />
|
||||||
|
<glyph glyph-name="uniF412" unicode=""
|
||||||
|
d="M1920 832l-640 -640v448h-1024v704l384 384v-704h640v448z" />
|
||||||
|
<glyph glyph-name="uniF440" unicode=""
|
||||||
|
d="M1152 640v-256h256l-384 -384l-384 384h256v256h256zM1664 1024c141.312 0 256 -114.688 256 -256s-114.688 -256 -256 -256h-384v256h-512v-256h-384c-141.312 0 -256 114.688 -256 256s114.688 256 256 256h6.40039c-4.09668 20.7363 -6.40039 42.1123 -6.40039 64
|
||||||
|
c0 176.768 143.232 320 320 320c89.3438 0 169.984 -36.7363 227.968 -95.8721c60.7998 131.84 193.408 223.872 348.032 223.872c211.968 0 384 -171.904 384 -384c0 -45.1836 -9.21582 -87.8076 -23.5518 -128h23.5518z" />
|
||||||
|
<glyph glyph-name="uniF305" unicode=""
|
||||||
|
d="M1408 1664h256v-1280h-1408v1280h256v128h128v-128h640v128h128v-128zM1536 640v640c0 70.7842 -57.2158 128 -128 128h-896c-70.6562 0 -128 -57.2158 -128 -128v-640c0 -70.7842 57.3438 -128 128 -128h896c70.7842 0 128 57.2158 128 128zM960 1280
|
||||||
|
c35.3281 0 64 -28.6719 64 -64v-512c0 -35.3281 -28.6719 -64 -64 -64s-64 28.6719 -64 64v448h-64c-35.3281 0 -64 28.6719 -64 64s28.6719 64 64 64h128z" />
|
||||||
|
<glyph glyph-name="uniF443" unicode=""
|
||||||
|
d="M1152 1664l384 -384v-121.472v-6.52832v-768h-1024v1280h512h128zM1408 512v640h-256h-128v128v256h-384v-1024h768z" />
|
||||||
|
<glyph glyph-name="uniF411" unicode=""
|
||||||
|
d="M1280 1728l448 -448l-896 -896h-448v448zM1280 1536l-594.688 -594.688l96 -96l594.688 594.688zM768 512l128 128l-96 96v0l-64 64v0l-96 96l-128 -128zM845.312 781.312l96 -96l594.688 594.688l-96 96z" />
|
||||||
|
<glyph glyph-name="uniF402" unicode=""
|
||||||
|
d="M896 1536v-256h256v-128h-256v-256h-128v256h-256v128h256v256h128zM1297.15 878.848l494.848 -494.848l-128 -128l-494.848 494.848c-94.8486 -68.9912 -210.816 -110.848 -337.152 -110.848c-318.08 0 -576 257.92 -576 576s257.92 576 576 576s576 -257.92 576 -576
|
||||||
|
c0 -126.336 -41.8564 -242.304 -110.848 -337.152zM832 768c247.552 0 448 200.576 448 448s-200.448 448 -448 448c-247.424 0 -448 -200.576 -448 -448s200.576 -448 448 -448z" />
|
||||||
|
<glyph glyph-name="uniF420" unicode=""
|
||||||
|
d="M483.2 1564.8l-227.2 227.2h640v-640l-232.32 232.32c-93.0557 -92.1602 -151.68 -218.88 -151.68 -360.32c0 -238.208 163.584 -436.736 384 -493.824v-262.656c-363.008 61.0566 -640 376.064 -640 756.48c0 212.096 88.0645 402.048 227.2 540.8zM1792 1024
|
||||||
|
c0 -212.096 -88.0645 -401.92 -227.2 -540.8l227.2 -227.2h-640v640l18.5596 -18.5596l213.761 -213.761c93.0557 92.1602 151.68 218.88 151.68 360.32c0 238.208 -163.584 436.736 -384 493.824v262.656c363.008 -61.0566 640 -376.064 640 -756.48z" />
|
||||||
|
<glyph glyph-name="uniF425" unicode=""
|
||||||
|
d="M704 1024c35.3281 0 64 -28.6719 64 -64s-28.6719 -64 -64 -64s-64 28.6719 -64 64s28.6719 64 64 64zM704 1280c35.3281 0 64 -28.6719 64 -64s-28.6719 -64 -64 -64s-64 28.6719 -64 64s28.6719 64 64 64zM704 768c35.3281 0 64 -28.6719 64 -64s-28.6719 -64 -64 -64
|
||||||
|
s-64 28.6719 -64 64s28.6719 64 64 64zM896 896v128h384v-128h-384zM896 640v128h384v-128h-384zM1280 1664h256v-1280h-1152v1280h256c0 70.7842 57.3438 128 128 128h384c70.7842 0 128 -57.2158 128 -128zM832 1664c-35.3281 0 -64 -28.6719 -64 -64s28.6719 -64 64 -64
|
||||||
|
h256c35.3281 0 64 28.6719 64 64s-28.6719 64 -64 64h-256zM1408 512v1024h-128v-128h-640v128h-128v-1024h896zM896 1152v128h384v-128h-384z" />
|
||||||
|
<glyph glyph-name="uniF508" unicode=""
|
||||||
|
d="M1450.5 1395.2c45.6963 -69.376 124.288 -115.2 213.504 -115.2c5.50391 0 10.4961 1.28027 15.8721 1.66406l-399.872 -799.872l-256 512l-256 -512l-128 256l-256 -512l-299.776 599.424l228.992 114.561l70.7842 -141.568l256 512l128 -256l256 512l256 -512z
|
||||||
|
M1664 1728c106.112 0 192 -86.0156 192 -192s-85.8877 -192 -192 -192s-192 86.0156 -192 192s85.8877 192 192 192z" />
|
||||||
|
<glyph glyph-name="uniF507" unicode=""
|
||||||
|
d="M1792 604.544c76.2881 -44.416 128 -126.08 128 -220.544c0 -141.312 -114.688 -256 -256 -256s-256 114.688 -256 256c0 94.5918 51.7119 176.128 128 220.544v163.456c0 70.7842 -57.2158 128 -128 128h-256v-291.456c76.2881 -44.416 128 -126.08 128 -220.544
|
||||||
|
c0 -141.312 -114.688 -256 -256 -256s-256 114.688 -256 256c0 94.4639 51.8398 176.128 128 220.544v291.456h-256c-70.6562 0 -128 -57.2158 -128 -128v-163.456c76.1602 -44.416 128 -126.08 128 -220.544c0 -141.312 -114.688 -256 -256 -256s-256 114.688 -256 256
|
||||||
|
c0 94.4639 51.8398 176.128 128 220.544v163.456c0 212.096 171.904 384 384 384h256v291.456c-76.1602 44.416 -128 126.08 -128 220.544c0 141.312 114.688 256 256 256s256 -114.688 256 -256c0 -94.4639 -51.7119 -176.128 -128 -220.544v-291.456h256
|
||||||
|
c211.968 0 384 -171.904 384 -384v-163.456zM1024 1792c-70.6562 0 -128 -57.3438 -128 -128s57.3438 -128 128 -128s128 57.3438 128 128s-57.3438 128 -128 128zM384 256c70.6562 0 128 57.2158 128 128s-57.3438 128 -128 128s-128 -57.2158 -128 -128
|
||||||
|
s57.3438 -128 128 -128zM1024 256c70.6562 0 128 57.2158 128 128s-57.3438 128 -128 128s-128 -57.2158 -128 -128s57.3438 -128 128 -128zM1664 256c70.7842 0 128 57.2158 128 128s-57.2158 128 -128 128s-128 -57.2158 -128 -128s57.2158 -128 128 -128z" />
|
||||||
|
<glyph glyph-name="uniF306" unicode=""
|
||||||
|
d="M1151.87 1219.46c0.12793 -0.511719 0.12793 -0.896484 0.12793 -1.4082v-1.79199v-0.255859c0 -5.12012 -0.639648 -10.3682 -1.91992 -15.4883l-128 -512c-8.57617 -34.1758 -43.2637 -55.04 -77.5684 -46.5918c-34.3037 8.57617 -55.168 43.2637 -46.5918 77.5684
|
||||||
|
l108.16 432.512h-174.08c-35.3281 0 -64 28.6719 -64 64s28.6719 64 64 64h256h1.53613h1.28027c1.02344 -0.12793 1.91992 -0.12793 2.81543 -0.255859h0.255859c30.3359 -2.68848 54.5283 -26.624 57.8564 -56.96v0c0 -0.768555 0.12793 -1.4082 0.12793 -2.04785
|
||||||
|
v-1.28027zM1408 1664h256v-1280h-1408v1280h256v128h128v-128h640v128h128v-128zM1536 640v640c0 70.7842 -57.2158 128 -128 128h-896c-70.6562 0 -128 -57.2158 -128 -128v-640c0 -70.7842 57.3438 -128 128 -128h896c70.7842 0 128 57.2158 128 128z" />
|
||||||
|
<glyph glyph-name="uniF406" unicode=""
|
||||||
|
d="M2048 1920l-832 -832l832 -832l-128 -128l-832 832l-832 -832l-128 128l832 832l-832 832l128 128l832 -832l832 832z" />
|
||||||
|
<glyph glyph-name="uniF215" unicode=""
|
||||||
|
d="M1664 1920c141.312 0 256 -114.688 256 -256v-1280c0 -141.312 -114.688 -256 -256 -256h-1280c-141.312 0 -256 114.688 -256 256v1280c0 141.312 114.688 256 256 256h1280zM1024 1408c-212.096 0 -384 -171.904 -384 -384c0 -211.968 171.904 -384 384 -384
|
||||||
|
c211.968 0 384 172.032 384 384c0 212.096 -172.032 384 -384 384zM1792 384v768h-274.176c10.624 -41.0879 18.1758 -83.4561 18.1758 -128c0 -282.752 -229.248 -512 -512 -512s-512 229.248 -512 512c0 44.5439 7.42383 86.9121 18.1758 128h-274.176v-768
|
||||||
|
c0 -70.7842 57.3438 -128 128 -128h1280c70.7842 0 128 57.2158 128 128zM1792 1536v128c0 70.6562 -57.2158 128 -128 128h-128c-70.7842 0 -128 -57.3438 -128 -128v-128c0 -70.6562 57.2158 -128 128 -128h128c70.7842 0 128 57.3438 128 128z" />
|
||||||
|
<glyph glyph-name="uniF202" unicode=""
|
||||||
|
d="M1920 1583.74c-49.2803 -73.7285 -111.744 -138.368 -183.552 -190.208c0.767578 -15.7441 1.2793 -31.6162 1.2793 -47.4883c0 -485.76 -369.92 -1046.02 -1046.27 -1046.02c-207.616 0 -400.768 60.7998 -563.456 165.248
|
||||||
|
c28.7998 -3.45605 58.1123 -5.24805 87.8076 -5.24805c172.032 0 330.752 58.752 456.448 157.439c-160.768 2.81641 -296.576 108.929 -343.424 255.104c22.5283 -3.96777 45.4404 -6.52832 69.248 -6.52832c33.5361 0 65.9199 4.48047 96.7676 12.7998
|
||||||
|
c-168.319 33.792 -294.912 182.272 -294.912 360.448v4.73633c49.6641 -27.5205 106.368 -44.0322 166.528 -45.9521c-98.6875 65.9199 -163.456 178.432 -163.456 305.92c0 67.3281 18.1758 130.688 49.792 184.96c181.376 -222.464 452.353 -368.768 757.889 -384.128
|
||||||
|
c-6.27246 26.8799 -9.60059 54.9121 -9.60059 83.7119c0 203.008 164.608 367.616 367.616 367.616c105.855 0 201.472 -44.6719 268.544 -116.096c83.584 16.5117 162.304 47.1035 233.216 89.2158c-27.3916 -85.8887 -85.7598 -157.952 -161.536 -203.393
|
||||||
|
c74.3682 8.83203 145.152 28.5439 211.072 57.8564z" />
|
||||||
|
<glyph glyph-name="uniF222" unicode=""
|
||||||
|
d="M1223.94 775.936c20.0967 20.0967 52.0967 19.9688 72.0645 0c19.9678 -19.9678 19.9678 -52.9912 0 -72.96c-56.96 -56.96 -145.92 -86.0156 -270.976 -86.0156c-126.977 0 -216.064 29.0557 -273.024 86.0156c-19.9678 19.9688 -19.9678 52.9922 0 72.96
|
||||||
|
c19.9678 19.9688 51.9678 19.9688 71.9355 0c38.0166 -38.0156 103.04 -56.0635 199.04 -56.0635c97.9209 0 162.944 18.0479 200.96 56.0635zM894.976 982.016c0 -61.0557 -49.9199 -112 -112 -112c-60.9277 0 -110.976 50.9443 -110.976 112
|
||||||
|
c0 61.9521 49.9199 112 110.976 112c61.9521 0 112 -50.0479 112 -112zM1265.02 1094.02c61.9512 0 112 -50.0479 112 -112c0 -61.0557 -50.0488 -112 -112 -112c-61.9521 0 -112 50.9443 -112 112c0 61.9521 50.0479 112 112 112zM1698.05 1089.02
|
||||||
|
c24.96 17.9199 43.0078 45.9512 43.1357 78.9756c0 54.0156 -44.0312 98.0479 -98.0479 98.0479c-32 0 -57.9834 -16 -76.0322 -39.04c53.8887 -39.9355 98.9443 -87.04 130.944 -137.983zM1021.06 500.992c347.904 0 631.937 177.023 632.064 393.983
|
||||||
|
c0 219.009 -284.032 396.032 -632.064 396.032c-349.056 0 -632.96 -177.023 -632.96 -395.008s283.904 -395.008 632.96 -395.008zM306.944 1168c0 -30.9756 16 -57.9844 39.9355 -74.8799c32 50.9443 76.9277 97.0234 131.968 136.96
|
||||||
|
c-17.9199 22.0156 -43.0078 35.9678 -72.96 35.9678c-54.9121 0 -98.9434 -44.0322 -98.9434 -98.0479zM1600 1805.06c-41.9844 0 -77.0557 -35.0713 -77.0557 -77.0557s35.0713 -77.0557 77.0557 -77.0557s77.0557 34.9434 77.0557 77.0557
|
||||||
|
s-35.0713 77.0557 -77.0557 77.0557zM1842.94 1168c0 -75.0078 -41.9844 -137.984 -101.889 -173.056c8.95996 -32 13.9521 -64.8965 13.9521 -98.9443c0 -274.944 -329.088 -498.048 -734.08 -498.048s-734.976 222.976 -734.976 497.023
|
||||||
|
c0 35.9688 6.01562 70.0166 16.1279 104.064c-57.9844 34.9443 -97.0244 97.0244 -97.0244 168.96c0 110.976 89.9844 200.96 200.96 200.96c66.0488 0 124.032 -32.8955 160 -82.9443c114.944 60.9287 257.024 99.9688 411.904 105.984l92.0322 456.96
|
||||||
|
c3.07227 14.0801 11.0078 25.9844 23.04 33.0244c12.0322 8.06348 25.9834 9.9834 39.04 7.04004l312.96 -72.0645c30.9756 52.9922 88.96 89.9844 155.008 89.9844c98.9443 0 179.072 -80 179.072 -178.944s-80 -178.944 -178.944 -178.944
|
||||||
|
c-95.1035 0 -172.032 73.9844 -178.048 167.937l-262.016 60.0322l-77.0566 -386.049c148.992 -7.93555 285.952 -46.9756 397.057 -108.031c35.9678 51.9678 94.9756 86.0156 162.943 86.0156c109.952 0 199.937 -89.9844 199.937 -200.96z" />
|
||||||
|
<glyph glyph-name="uniF214" unicode=""
|
||||||
|
d="M1091.2 1920v-452.992h425.216v-281.216h-425.216v-459.52c0 -103.937 5.50391 -170.624 16.6396 -200.192c10.8799 -29.3125 31.4883 -52.8643 61.3125 -70.5283c39.6797 -23.8076 84.8633 -35.7119 135.936 -35.7119c90.624 0 180.864 29.4404 270.72 88.4482v-282.624
|
||||||
|
c-76.6719 -35.9678 -146.048 -61.3125 -208 -75.9043c-61.9512 -14.4639 -129.023 -21.7598 -201.216 -21.7598c-81.9199 0 -154.368 10.3682 -217.344 30.9756c-62.9756 20.6084 -116.608 50.3047 -161.024 88.4482c-44.5439 38.2725 -75.2637 78.9766 -92.416 122.112
|
||||||
|
c-17.1514 43.1357 -25.7275 105.6 -25.7275 187.52v628.736h-198.016v253.568c70.3994 22.9121 130.688 55.6797 180.863 98.4316c50.3047 42.624 90.4961 93.8242 120.832 153.856c30.3359 59.7754 51.2002 135.808 62.7207 228.352h254.72z" />
|
||||||
|
<glyph glyph-name="uniF104" unicode=""
|
||||||
|
d="M512 1664l1152 -640l-1152 -640v1280z" />
|
||||||
|
<glyph glyph-name="uniF50B" unicode=""
|
||||||
|
d="M1408 1152l-384 -384l-384 384h256v512h256v-512h256zM384 640h1280v-256h-1280v256z" />
|
||||||
|
<glyph glyph-name="uniF409" unicode=""
|
||||||
|
d="M1024 1664l640 -512l-128 -128v-512h-1024v512l-128 128zM1152 576v448h-256v-448h256z" />
|
||||||
|
<glyph glyph-name="uniF458" unicode=""
|
||||||
|
d="M1920 1024l-1024 -640v480l-768 -480v1280l768 -480v480z" />
|
||||||
|
<glyph glyph-name="uniF218" unicode=""
|
||||||
|
d="M1792 1152h256v-128h-256v-256h-128v256h-256v128h256v256h128v-256zM1301.5 1920l-150.528 -84.7363h-145.792c54.0166 -44.6719 167.04 -138.624 167.04 -317.439c0 -173.952 -98.8154 -256.256 -197.504 -333.952
|
||||||
|
c-30.5918 -30.4639 -65.9199 -63.4883 -65.9199 -115.2s35.3281 -79.8721 61.1846 -101.12l84.7354 -65.792c103.424 -86.9121 197.376 -166.912 197.376 -329.216c0 -221.184 -213.888 -444.544 -618.368 -444.544c-341.119 0 -505.728 162.304 -505.728 336.384
|
||||||
|
c0 84.6084 42.3682 204.544 181.12 286.849c145.792 89.4717 343.424 101.119 449.152 108.159c-32.8965 42.3682 -70.5283 87.04 -70.5283 159.744c0 40.1924 11.7754 63.7441 23.5518 91.7764c-25.9844 -2.04785 -51.7119 -4.6084 -75.2637 -4.6084
|
||||||
|
c-249.216 0 -390.4 185.856 -390.4 369.28c0 108.032 49.4082 227.968 150.528 315.008c134.144 110.592 294.016 129.408 420.864 129.408h484.479zM1094.53 480.768c0 119.809 -77.5684 183.425 -256.385 310.528c-18.8154 2.30371 -30.5918 2.30371 -54.0156 2.30371
|
||||||
|
c-21.1201 0 -148.224 -4.60742 -246.912 -37.6318c-51.8398 -18.8154 -202.368 -75.1357 -202.368 -242.304c0 -166.784 162.305 -286.848 413.952 -286.848c225.792 0 345.729 108.159 345.729 253.951zM906.496 1238.02c54.0156 54.1445 58.752 129.408 58.624 171.648
|
||||||
|
c0 169.344 -101.12 432.768 -296.192 432.768c-61.3115 0 -127.104 -30.5918 -164.735 -77.5674c-39.9365 -49.4082 -51.7119 -112.896 -51.7119 -174.08c0 -157.568 91.6475 -418.561 294.016 -418.561c58.752 0 122.368 28.2881 160 65.792z" />
|
||||||
|
<glyph glyph-name="uniF513" unicode=""
|
||||||
|
d="M1920 1280l-555.136 -387.968l212.863 -636.032l-553.728 394.496l-553.728 -394.496l212.991 636.032l-555.264 387.968h685.312l210.688 640l210.688 -640h685.312zM1024 807.68l307.584 -219.136l-118.4 353.536l300.288 209.92h-371.456l-118.016 358.528v-702.849z
|
||||||
|
" />
|
||||||
|
<glyph glyph-name="uniF301" unicode=""
|
||||||
|
d="M704 1152h960l-256 -640h-1024v1024h384l64 -128h448v-128h-640l-128 -256h128z" />
|
||||||
|
<glyph glyph-name="uniF474" unicode=""
|
||||||
|
d="M128 1408v384h384zM640 768v512h768v-512h-768zM1536 1792h384v-384zM128 640l384 -384h-384v384zM1536 256l384 384v-384h-384zM1536 1408l256 384l128 -128zM1536 640l384 -256l-128 -128zM128 384l384 256l-256 -384zM128 1664l128 128l256 -384z" />
|
||||||
|
<glyph glyph-name="uniF438" unicode=""
|
||||||
|
d="M1280 1792c141.312 0 256 -114.688 256 -256v-1024c0 -141.312 -114.688 -256 -256 -256h-512c-141.312 0 -256 114.688 -256 256v384h128v-128h768v768h-768v-128h-128v128c0 141.312 114.688 256 256 256h512zM1024 384c70.7842 0 128 57.2158 128 128
|
||||||
|
s-57.2158 128 -128 128c-70.6562 0 -128 -57.2158 -128 -128s57.3438 -128 128 -128zM768 896v128h-512v256h512v128l384 -256z" />
|
||||||
|
<glyph glyph-name="uniF451" unicode=""
|
||||||
|
d="M256 384v1280l1024 -640zM1408 1664h384v-1280h-384v1280z" />
|
||||||
|
<glyph glyph-name="uniF404" unicode=""
|
||||||
|
d="M1024 640c-19.8398 0 -39.04 2.43164 -57.8564 5.63184l436.225 436.225c3.2002 -18.8164 5.63184 -38.0166 5.63184 -57.8564c0 -211.968 -172.032 -384 -384 -384zM1696.26 1375.74l351.744 -351.744l-506.624 -506.624
|
||||||
|
c-131.456 -134.272 -314.752 -217.728 -517.376 -217.728c-117.248 0 -226.944 29.3115 -324.864 79.1035l147.072 146.944c56.7041 -20.6084 115.968 -34.0479 177.92 -34.0479c144 0 279.168 56.832 380.288 160.128l372.096 372.224l-216.063 215.936zM1606.02 1722.11
|
||||||
|
l128.641 -129.024l-1279.87 -1279.87l-128.896 128.769l128 128.128l-453.888 453.888v0l506.496 506.496c131.456 134.4 314.624 217.984 517.504 217.984c170.368 0 324.48 -61.8242 448 -160.385zM896 1024c70.6562 0 128 57.3438 128 128s-57.3438 128 -128 128
|
||||||
|
c-70.7842 0 -128 -57.3438 -128 -128s57.2158 -128 128 -128zM1229.18 1345.28l105.729 105.728c-90.752 66.8164 -197.12 105.473 -310.912 105.473c-144.128 0 -279.168 -56.9609 -380.288 -160.385l-372.096 -372.096l318.208 -318.336l113.023 113.024
|
||||||
|
c-38.6553 59.5195 -62.8477 129.023 -62.8477 205.312c0 212.096 172.032 384 384 384c76.2881 0 145.792 -24.1924 205.184 -62.7197z" />
|
||||||
|
<glyph glyph-name="uniF209" unicode=""
|
||||||
|
d="M1073.15 2048c481.664 0 798.976 -348.672 798.976 -722.944c0 -495.104 -275.328 -865.151 -680.96 -865.151c-136.32 0 -264.448 73.7275 -308.352 157.439c0 0 -73.2168 -290.943 -88.832 -347.136c-26.8809 -97.2803 -79.2324 -194.56 -127.104 -270.208
|
||||||
|
l-148.992 54.0156c-3.58398 88.3203 -0.639648 194.049 22.0166 289.92c24.1914 102.4 162.304 687.744 162.304 687.744s-40.3203 80.6406 -40.3203 199.809c0 187.008 108.544 326.784 243.456 326.784c114.816 0 170.24 -86.1445 170.24 -189.44
|
||||||
|
c0 -115.328 -73.7275 -288 -111.488 -448c-31.6152 -133.632 67.2002 -242.816 199.168 -242.816c239.232 0 400.128 307.072 400.128 670.977c0 276.607 -186.367 483.712 -525.184 483.712c-382.72 0 -621.312 -285.568 -621.312 -604.544
|
||||||
|
c0 -110.08 32.5117 -187.521 83.1992 -247.424c23.5527 -27.7764 26.624 -38.9121 18.3047 -70.6562c-6.0166 -23.04 -19.9688 -78.9766 -25.7285 -101.248c-8.44824 -32 -34.3037 -43.2637 -63.2314 -31.3604c-176.257 71.6807 -258.433 264.96 -258.433 482.048
|
||||||
|
c0 358.656 302.336 788.48 902.145 788.48z" />
|
||||||
|
<glyph glyph-name="uniF217" unicode=""
|
||||||
|
d="M1024 1920c494.08 0 896 -402.048 896 -896c0 -494.08 -401.92 -896 -896 -896c-493.952 0 -896 401.92 -896 896c0 493.952 402.048 896 896 896zM1112.83 1769.47c-211.2 10.4961 -420.864 -73.4717 -564.608 -220.16
|
||||||
|
c-146.432 -144.256 -216.063 -354.176 -189.695 -551.68c23.4238 -197.248 142.592 -378.496 307.584 -476.032c160.768 -96 365.312 -104.191 530.943 -29.0557c-47.1035 -13.0557 -96.6396 -20.3516 -147.712 -20.3516c-303.487 0 -550.399 246.911 -550.399 550.399
|
||||||
|
c0 143.872 55.6797 274.944 146.304 373.12c1.02441 1.02441 1.91992 1.91992 2.81641 2.94434c4.60742 4.73535 9.08789 9.47168 13.6953 14.208c0.512695 0.383789 0.896484 1.02344 1.4082 1.2793c128 148.353 317.056 242.177 528.256 242.177
|
||||||
|
c221.057 0 418.176 -102.912 546.048 -263.424c-20.8633 33.5352 -44.0312 65.6631 -69.376 95.6152c-137.983 168.832 -343.68 273.408 -555.264 280.96zM1415.04 1006.21c4.35156 -90.3682 -25.3438 -182.912 -80.7676 -257.152
|
||||||
|
c-55.5527 -73.8555 -135.169 -129.664 -225.28 -156.928c-74.8799 -22.7842 -156.544 -25.5996 -234.112 -7.04004c54.0166 -21.6318 112.896 -33.6641 174.464 -33.6641c259.968 0 471.296 211.456 471.296 471.296c0 0.768555 -0.12793 1.66406 -0.12793 2.68848
|
||||||
|
c-13.6953 142.336 -88.1914 276.352 -200.319 359.168c-137.345 104.576 -332.288 116.864 -479.232 38.0156c-73.2158 -38.5273 -136.832 -97.1514 -176.896 -166.912c-40.5762 -69.8877 -58.4961 -151.68 -52.2246 -230.912
|
||||||
|
c10.624 -158.976 124.8 -305.023 271.616 -345.216c146.432 -44.0322 313.344 19.584 391.936 142.849c82.5605 120.447 62.7207 293.119 -36.3516 391.68c-94.0801 104.192 -260.992 115.968 -367.872 36.8643c-54.0156 -38.6562 -92.5439 -94.3359 -105.344 -157.057
|
||||||
|
c-13.3125 -62.0801 -1.66406 -128.64 30.4639 -181.76c32.1279 -53.7598 83.7119 -93.5684 141.952 -108.032c58.2402 -15.1035 121.6 -4.86328 171.52 25.6006c50.5605 30.4639 87.5518 80.1279 97.9199 135.68c11.3926 55.2959 -1.66406 114.432 -34.3037 158.848
|
||||||
|
c-32.1279 45.5684 -82.8164 73.3447 -135.936 76.9287c-52.9922 4.0957 -105.856 -17.2803 -141.568 -54.2725c-36.6084 -35.9678 -52.0957 -89.0879 -44.6719 -137.855c7.55176 -48.6406 38.2715 -93.6963 80 -115.584c26.4961 -14.7207 57.4717 -19.8408 86.9121 -16.3848
|
||||||
|
c-62.0801 1.53613 -114.177 43.2646 -131.456 100.097c-0.512695 0.767578 -1.02441 1.66406 -1.4082 2.6875c-17.9199 41.4717 -13.0557 94.3359 16.1279 133.376c28.416 38.7842 77.5684 63.3604 128.768 60.7998c51.0723 -1.66406 101.376 -33.0234 128 -78.9756
|
||||||
|
c27.3926 -45.8242 32 -106.752 7.80859 -158.336c-24.0645 -51.7119 -73.7285 -90.2402 -131.584 -101.632c-57.4717 -12.416 -122.752 4.73535 -167.68 47.3594c-44.8008 40.96 -72.0645 104.192 -67.4561 168.32c3.83984 133.12 150.911 237.44 287.104 200.96
|
||||||
|
c138.368 -31.6162 226.944 -196.736 173.824 -338.304c-48.6406 -142.72 -224.769 -225.536 -373.888 -166.912c-74.1123 27.5195 -134.784 85.8877 -169.729 157.568c-34.9443 72.1914 -42.2402 158.592 -17.9199 237.695c47.8721 161.664 226.176 269.185 398.848 238.464
|
||||||
|
c175.36 -25.5996 313.217 -192.64 317.568 -374.016zM1024 207.488c319.232 0 595.968 184.319 730.112 451.712c37.248 84.7354 58.8799 175.744 58.8799 265.728c0 318.977 -247.04 554.368 -553.216 607.616c154.496 -64 279.296 -200.32 331.52 -362.496
|
||||||
|
c70.1445 -203.136 20.8643 -447.872 -133.12 -608.896c-148.224 -162.944 -384.384 -245.633 -608.128 -206.208c-226.048 35.584 -422.912 198.271 -517.504 407.936c-97.792 209.408 -90.3682 468.224 26.8799 674.432c116.736 206.337 329.344 354.433 566.272 395.009
|
||||||
|
c11.7754 2.17578 23.6797 3.96777 35.584 5.37598c-420.992 -32.1279 -753.664 -384.641 -753.664 -813.696c0 -450.304 366.208 -816.512 816.384 -816.512z" />
|
||||||
|
<glyph glyph-name="uniF469" unicode=""
|
||||||
|
d="M256 1280h1536v-768h-256v384h-1024v-384h-256v768zM1408 1664v-256h-768v256h768zM1408 640c0 -98.3037 37.5039 -196.48 112.512 -271.488l112.513 -112.512h-768l-112.513 112.512c-75.0078 75.0078 -112.512 173.185 -112.512 271.488v128h768v-128z" />
|
||||||
|
<glyph glyph-name="uniF476" unicode=""
|
||||||
|
d="M384 1248c123.776 0 224 -100.224 224 -224c0 -123.648 -100.224 -224 -224 -224s-224 100.352 -224 224c0 123.776 100.224 224 224 224zM1024 1248c123.648 0 224 -100.224 224 -224c0 -123.648 -100.352 -224 -224 -224c-123.776 0 -224 100.352 -224 224
|
||||||
|
c0 123.776 100.224 224 224 224zM1664 1248c123.648 0 224 -100.224 224 -224c0 -123.648 -100.352 -224 -224 -224s-224 100.352 -224 224c0 123.776 100.352 224 224 224z" />
|
||||||
|
<glyph glyph-name="uniF211" unicode=""
|
||||||
|
d="M1472 1440c229.888 0 416 -186.24 416 -416s-186.112 -416 -416 -416s-416 186.24 -416 416s186.112 416 416 416zM576 1440c229.76 0 416 -186.24 416 -416s-186.24 -416 -416 -416s-416 186.24 -416 416s186.24 416 416 416z" />
|
||||||
|
<glyph glyph-name="uniF456" unicode=""
|
||||||
|
d="M1024 1792c424.064 0 768 -343.936 768 -768s-343.936 -768 -768 -768c-424.192 0 -768 343.936 -768 768s343.808 768 768 768zM1024 512c70.7842 0 128 57.2158 128 128s-57.2158 128 -128 128c-70.6562 0 -128 -57.2158 -128 -128s57.3438 -128 128 -128zM1113.22 896
|
||||||
|
l51.584 640h-281.6l51.2002 -640h178.815z" />
|
||||||
|
<glyph glyph-name="uniF471" unicode=""
|
||||||
|
d="M512 1664h358.656c163.328 0 281.855 -23.2959 355.712 -69.7598c73.7275 -46.4639 110.592 -120.448 110.592 -221.824c0 -68.8643 -16.1279 -125.312 -48.3838 -169.344c-32.3838 -44.1602 -75.2646 -70.6562 -128.769 -79.6162v-7.93652
|
||||||
|
c72.96 -16.2559 125.568 -46.7197 157.952 -91.3916c32.2559 -44.6719 48.5127 -104.063 48.5127 -178.048c0 -105.088 -38.0166 -187.008 -113.921 -245.888c-76.0312 -58.8809 -178.943 -88.1924 -309.248 -88.1924h-431.104v1152zM768 1207.81h130.176
|
||||||
|
c66.3047 0 114.176 10.2402 143.872 30.7207c29.5684 20.4795 44.5439 54.3994 44.5439 101.632c0 44.1602 -16.1279 75.7754 -48.5117 94.9756c-32.3838 19.0723 -83.4561 28.7998 -153.344 28.7998h-116.736v-256.128zM768 1013.89v-300.16h147.456
|
||||||
|
c67.2002 0 116.864 12.9287 148.864 38.6562c32.1279 25.7285 48.1279 65.1523 48.1279 118.145c0 95.6152 -68.3525 143.487 -204.929 143.487h-139.52v-0.12793z" />
|
||||||
|
<glyph glyph-name="uniF433" unicode=""
|
||||||
|
d="M0 896l896 -896h-896v896z" />
|
||||||
|
<glyph glyph-name="uniF447" unicode=""
|
||||||
|
d="M1408 512c70.7842 0 128 -57.2158 128 -128s-57.2158 -128 -128 -128s-128 57.2158 -128 128s57.2158 128 128 128zM640 512c70.6562 0 128 -57.2158 128 -128s-57.3438 -128 -128 -128s-128 57.2158 -128 128s57.3438 128 128 128zM1536 896h-896v-128h896v-128h-1024
|
||||||
|
v1024h-256v128h384v-256h1152z" />
|
||||||
|
<glyph glyph-name="uniF511" unicode=""
|
||||||
|
d="M1024 1510.53l-118.016 -358.528h-371.328l300.288 -209.92l-118.272 -353.28l307.328 218.88l307.584 -219.136l-118.4 353.536l300.288 209.92h-371.456zM1024 1920v0l210.688 -640h685.312l-555.136 -387.968l212.863 -636.032l-553.728 394.496l-553.728 -394.496
|
||||||
|
l212.991 636.032l-555.264 387.968h685.312z" />
|
||||||
|
<glyph glyph-name="uniF427" unicode=""
|
||||||
|
d="M1717.72 1436.21c99.7246 -99.7246 99.7246 -261.281 0 -361.006l-232.861 -232.989c-98.5723 -98.5723 -257.44 -99.3398 -357.421 -2.81543l-455.353 -455.354h-288.036v287.908l455.097 454.969l-0.767578 0.768555c-99.5967 99.5957 -99.5967 261.408 0 361.005
|
||||||
|
l232.989 232.989c99.5957 99.7246 261.408 99.7246 361.005 0zM1344.04 1104.01l160.02 160.021l-256.031 256.031l-160.021 -160.02z" />
|
||||||
|
<glyph glyph-name="uniF219" unicode=""
|
||||||
|
d="M1438.08 1832.7c0 0 563.456 -229.376 370.176 -838.4c-267.264 -554.496 -784.64 -349.056 -784.64 -349.056v-277.504s-19.7119 -153.344 -202.88 -220.288c-183.296 -66.6885 -351.616 59.5195 -351.616 59.5195v279.809
|
||||||
|
c83.584 -85.5039 195.712 -134.272 240.128 -9.98438v945.92h311.68v-537.472s460.416 -138.496 522.368 289.792c9.85645 475.392 -546.944 472.832 -546.944 472.832s-349.184 22.2715 -522.495 -257.536c-131.2 -222.848 37.1191 -423.424 37.1191 -423.424
|
||||||
|
l-225.279 -200.448s-339.2 418.433 -7.42383 871.552c430.848 487.681 1159.81 194.688 1159.81 194.688z" />
|
||||||
|
<glyph glyph-name="uniF100" unicode=""
|
||||||
|
d="M512 1408h1024v-128h-1024v128zM1152 1152v-128h-640v128h640zM1280 1024v128h256v-128h-256zM896 768v128h640v-128h-640zM768 896v-128h-256v128h256zM512 512v128h768v-128h-768z" />
|
||||||
|
<glyph glyph-name="uniF400" unicode=""
|
||||||
|
d="M1792 384l-128 -128l-494.848 494.848c-94.8486 -68.9912 -210.816 -110.848 -337.152 -110.848c-318.08 0 -576 257.92 -576 576s257.92 576 576 576s576 -257.92 576 -576c0 -126.336 -41.8564 -242.304 -110.848 -337.152zM384 1216c0 -247.424 200.576 -448 448 -448
|
||||||
|
c247.552 0 448 200.576 448 448s-200.448 448 -448 448c-247.424 0 -448 -200.576 -448 -448z" />
|
||||||
|
<glyph glyph-name="uniF439" unicode=""
|
||||||
|
d="M896 1664v-384h-256v384c0 70.7842 57.3438 128 128 128s128 -57.2158 128 -128zM1408 1664v-384h-256v384c0 70.7842 57.2158 128 128 128s128 -57.2158 128 -128zM384 1152h1280c0 -309.632 -219.904 -567.68 -512 -627.072v-268.928h-256v268.928
|
||||||
|
c-292.096 59.2646 -512 317.44 -512 627.072z" />
|
||||||
|
<glyph glyph-name="uniF509" unicode=""
|
||||||
|
d="M1534.21 717.824l147.712 -88.5762c-134.4 -223.36 -378.24 -373.248 -657.92 -373.248c-279.552 0 -523.52 149.888 -657.92 373.248l147.712 88.7041c92.1602 -98.1758 226.816 -168.96 382.208 -194.688v500.736h-128v128h128v163.456
|
||||||
|
c-76.1602 44.416 -128 126.08 -128 220.544c0 141.312 114.688 256 256 256s256 -114.688 256 -256c0 -94.4639 -51.7119 -176.128 -128 -220.544v-163.456h128v-128h-128v-500.864c155.52 25.7285 289.92 96.3838 382.208 194.688zM1024 1664
|
||||||
|
c-70.6562 0 -128 -57.3438 -128 -128s57.3438 -128 128 -128c70.7842 0 128 57.3438 128 128s-57.2158 128 -128 128z" />
|
||||||
|
<glyph glyph-name="uniF510" unicode=""
|
||||||
|
d="M1664 1152v-256h-512v-512h-256v512h-512v256h512v512h256v-512h512z" />
|
||||||
|
<glyph glyph-name="uniF445" unicode=""
|
||||||
|
d="M1888 748.032l-57.5996 -139.648l-305.408 21.8887c-31.3604 -39.9365 -66.9443 -75.6484 -106.88 -107.009l21.7598 -305.536l-139.264 -57.5996l-200.704 231.552c-25.2158 -3.07129 -49.9199 -7.67969 -75.9043 -7.67969c-25.7275 0 -50.1758 4.6084 -75.1357 7.67969
|
||||||
|
l-200.96 -231.808l-139.393 57.7275l21.7607 305.408c-39.9365 31.3604 -75.5205 66.9443 -107.009 106.88l-305.536 -21.7598l-57.7275 139.264l231.68 200.832c-3.07129 25.0879 -7.67969 49.792 -7.67969 75.7764c0 25.7275 4.6084 50.1758 7.55176 75.1357
|
||||||
|
l-231.552 200.96l57.7275 139.393l305.28 -21.7607c31.4883 39.9365 67.2002 75.7764 107.265 107.265l-21.7607 305.408l139.137 57.5996l200.96 -231.68c24.96 2.94336 49.5352 7.67969 75.3916 7.67969s50.4316 -4.73633 75.3916 -7.67969l200.96 231.68
|
||||||
|
l139.265 -57.5996l-21.8887 -305.408c39.9365 -31.3604 75.6484 -67.0723 107.137 -107.008l305.408 21.6318l57.5996 -139.136l-231.552 -200.832c3.07129 -25.0889 7.67969 -49.6641 7.67969 -75.6484c0 -25.7275 -4.6084 -50.3037 -7.67969 -75.2637zM1280 1024
|
||||||
|
c0 141.312 -114.688 256 -256 256s-256 -114.688 -256 -256s114.688 -256 256 -256s256 114.688 256 256z" />
|
||||||
|
<glyph glyph-name="uniF516" unicode=""
|
||||||
|
d="M1024 1452.42v-467.328h-155.776v467.328h155.776zM1408 1452.42v-467.328h-155.776v467.328h155.776zM323.2 1920h1596.8v-1090.82l-467.456 -445.184h-350.464l-233.6 -256h-228.48v256h-512v1224.32zM1764.22 907.136v857.088h-1285.5v-1129.73h350.977v-211.328
|
||||||
|
l233.472 211.328h428.16z" />
|
||||||
|
<glyph glyph-name="uniF435" unicode=""
|
||||||
|
d="M384 512l640 640l640 -640h-1280zM384 1408h1280v-128h-1280v128z" />
|
||||||
|
<glyph glyph-name="uniF300" unicode=""
|
||||||
|
d="M1536 1536c141.312 0 256 -114.688 256 -256v-384c0 -141.312 -114.688 -256 -256 -256h-448l-448 -448v448h-128c-141.312 0 -256 114.688 -256 256v384c0 141.312 114.688 256 256 256h1024z" />
|
||||||
|
<glyph glyph-name="uniF514" unicode=""
|
||||||
|
d="M1664 768v128l256 -256l-256 -256v128h-256c-282.752 0 -512 229.248 -512 512c0 141.312 -114.688 256 -256 256h-384v256h384c282.752 0 512 -229.248 512 -512c0 -141.312 114.688 -256 256 -256h256zM1408 1280c-61.8242 0 -117.888 -22.9121 -162.176 -59.3916
|
||||||
|
c-27.3926 83.9678 -70.7842 160 -128 224.768c82.5596 56.96 182.271 90.624 290.176 90.624h256v128l256 -256l-256 -256v128h-256zM640 768c61.8242 0 117.888 22.9121 162.176 59.3916c27.3926 -83.9678 70.7842 -160 128 -224.768
|
||||||
|
c-82.5596 -56.832 -182.271 -90.624 -290.176 -90.624h-384v256h384z" />
|
||||||
|
<glyph glyph-name="uniF102" unicode=""
|
||||||
|
d="M1408 1408l512 -128v-896h-1792v896l512 128l128 256h512zM1024 512.256c247.552 0 448 200.448 448 448c0 247.424 -200.448 448 -448 448c-247.424 0 -448 -200.576 -448 -448c0 -247.552 200.576 -448 448 -448zM512 1600v-96.1279l-256 -64v160.128h256z
|
||||||
|
M1024 1280.13c176.768 0 320 -143.231 320 -320c0 -176.768 -143.232 -320 -320 -320s-320 143.232 -320 320c0 176.769 143.232 320 320 320z" />
|
||||||
|
<glyph glyph-name="uniF466" unicode=""
|
||||||
|
d="M640 1344l-320 -320l320 -320v-320l-640 640l640 640v-320zM1408 1280c282.752 0 512 -229.248 512 -512v-299.904l-150.016 149.889c-99.9688 99.9678 -231.04 150.016 -361.984 150.016h-256v-384l-640 640l640 640v-384h256z" />
|
||||||
|
<glyph glyph-name="uniF463" unicode=""
|
||||||
|
d="M1536 1408l-768 -384l-768 384v128h1536v-128zM0 1216l768 -384l256 128v-448h-1024v704zM1920 1152c70.7842 0 128 -57.3438 128 -128v-640c0 -70.7842 -57.2158 -128 -128 -128h-640c-70.7842 0 -128 57.2158 -128 128v640c0 70.6562 57.2158 128 128 128h640z
|
||||||
|
M1920 640v128h-256v256h-128v-256h-256v-128h256v-256h128v256h256z" />
|
||||||
|
<glyph glyph-name="uniF422" unicode=""
|
||||||
|
d="M384 1536h1152v-1024h-1152v1024zM1408 640v640h-896v-640h896z" />
|
||||||
|
<glyph glyph-name="uniF201" unicode=""
|
||||||
|
d="M1024 128c128 0 256 32 368 80c-16 144 -64 368 -208 688c-288 -96 -560 -304 -704 -576c144 -128 336 -192 544 -192zM1536 288c208 144 352 384 384 640c-192 32 -368 32 -576 0c16 -32 128 -304 192 -640zM128 1088v-64c0 -224 80 -432 224 -592
|
||||||
|
c176 288 496 496 784 592c-16 48 -48 112 -80 176c-368 -112 -592 -144 -928 -112zM1760 1536c-160 -128 -368 -192 -560 -288c48 -64 64 -112 96 -176c208 48 480 32 624 0c-16 176 -64 336 -160 464zM672 1856c-256 -112 -448 -336 -512 -624c288 -32 688 48 832 96
|
||||||
|
c-96 192 -192 352 -320 528zM1024 1920c-64 0 -128 -16 -192 -16c128 -208 192 -320 304 -512c128 48 384 128 528 256c-160 160 -384 272 -640 272zM1024 2048c560 0 1024 -464 1024 -1024s-464 -1024 -1024 -1024s-1024 464 -1024 1024s464 1024 1024 1024z" />
|
||||||
|
<glyph glyph-name="uniF426" unicode=""
|
||||||
|
d="M1664 1024c141.312 0 256 -114.688 256 -256s-114.688 -256 -256 -256h-1280c-141.312 0 -256 114.688 -256 256s114.688 256 256 256h6.52832c-4.35254 20.8643 -6.52832 41.9844 -6.52832 64c0 176.768 143.232 320 320 320
|
||||||
|
c89.3438 0 169.984 -36.8643 227.968 -95.8721c60.7998 131.84 193.408 223.872 348.032 223.872c211.968 0 384 -171.904 384 -384c0 -45.1836 -9.21582 -87.8076 -23.5518 -128h23.5518z" />
|
||||||
|
<glyph glyph-name="uniF446" unicode=""
|
||||||
|
d="M1024 1792c424.064 0 768 -343.936 768 -768s-343.936 -768 -768 -768s-768 343.936 -768 768s343.936 768 768 768zM1536 1024c0 282.752 -229.248 512 -512 512c-94.8477 0 -182.528 -27.5195 -258.688 -72.4482l698.368 -698.24
|
||||||
|
c44.8008 76.1602 72.3203 163.969 72.3203 258.688zM512 1024c0 -282.752 229.248 -512 512 -512c94.7197 0 182.4 27.5195 258.56 72.3203l-698.239 698.239c-44.8008 -76.1592 -72.3203 -163.84 -72.3203 -258.56z" />
|
||||||
|
<glyph glyph-name="uniF504" unicode=""
|
||||||
|
d="M1664 1536c0 -94.4639 -51.7119 -176.128 -128 -220.544v-163.456c0 -282.752 -229.248 -512 -512 -512c-141.312 0 -256 -114.688 -256 -256v-128h-256v1059.46c-76.1602 44.416 -128 126.08 -128 220.544c0 141.312 114.688 256 256 256s256 -114.688 256 -256
|
||||||
|
c0 -94.4639 -51.8398 -176.128 -128 -220.544v-490.496c75.5195 44.0322 162.304 71.04 256 71.04c141.312 0 256 114.688 256 256v163.456c-76.2881 44.416 -128 126.08 -128 220.544c0 141.312 114.688 256 256 256s256 -114.688 256 -256zM640 1664
|
||||||
|
c-70.6562 0 -128 -57.3438 -128 -128s57.3438 -128 128 -128s128 57.3438 128 128s-57.3438 128 -128 128zM1408 1408c70.7842 0 128 57.3438 128 128s-57.2158 128 -128 128s-128 -57.3438 -128 -128s57.2158 -128 128 -128z" />
|
||||||
|
<glyph glyph-name="uniF465" unicode=""
|
||||||
|
d="M1536 1408l-768 -384l-768 384v128h1536v-128zM0 1216l768 -384l256 128v-448h-1024v704zM1920 1152c70.7842 0 128 -57.3438 128 -128v-640c0 -70.7842 -57.2158 -128 -128 -128h-640c-70.7842 0 -128 57.2158 -128 128v640c0 70.6562 57.2158 128 128 128h640z
|
||||||
|
M1531.52 384l452.48 452.48l-90.4961 90.4951l-361.984 -361.983l-180.991 180.992l-90.4961 -90.4961z" />
|
||||||
|
<glyph glyph-name="uniF424" unicode=""
|
||||||
|
d="M1408 1792l384 -384v-768l-384 -384h-768l-384 384v768l384 384h768zM1024 512c70.7842 0 128 57.2158 128 128s-57.2158 128 -128 128c-70.6562 0 -128 -57.2158 -128 -128s57.3438 -128 128 -128zM1113.22 896l51.584 640h-281.6l51.2002 -640h178.815z" />
|
||||||
|
<glyph glyph-name="uniF418" unicode=""
|
||||||
|
d="M1408 1504l128 -96l-512 -768h-128l-288 416l128 128l224 -192z" />
|
||||||
|
<glyph glyph-name="uniF429" unicode=""
|
||||||
|
d="M1024 1453.31l493.312 -493.312l-493.312 -493.312l-86.6562 86.6553l342.656 342.656h-896v128h896l-342.656 342.656z" />
|
||||||
|
<glyph glyph-name="uniF308" unicode=""
|
||||||
|
d="M477.696 568.192l543.104 543.104l90.3682 -90.624l-542.976 -542.976c-100.225 -100.353 -152.32 -115.84 -226.305 -135.809c20.0967 74.1123 35.584 126.08 135.809 226.305zM1189.5 1732.61l180.992 180.991l542.976 -543.104l-180.991 -180.992
|
||||||
|
c-50.0488 50.0479 -130.944 50.0479 -180.992 0l-180.992 -180.992c-50.0479 -50.0479 -50.0479 -130.943 0 -180.992l-180.992 -180.991l-543.104 542.976l180.991 180.992c50.0488 -50.0479 131.072 -50.0479 181.12 0l180.992 181.12
|
||||||
|
c50.0479 50.0479 50.0479 130.943 0 180.992z" />
|
||||||
|
<glyph glyph-name="uniF226" unicode=""
|
||||||
|
d="M1477.76 1792c120.32 0 152.576 -68.6084 126.464 -195.584l-51.8398 -258.688c-40.96 -206.848 -88.0635 -445.695 -94.0801 -470.144c-11.0078 -44.1602 -27.9033 -119.168 -132.992 -119.168h-250.367c-9.98438 0 -9.98438 0 -20.0967 -10.1123
|
||||||
|
c-6.65527 -6.65527 -393.344 -455.424 -393.344 -455.424c-30.208 -34.6875 -80.3838 -28.5439 -98.6875 -21.1201c-18.3047 7.2959 -50.6885 29.6963 -50.6885 89.9844v1301.63s33.2803 138.624 146.304 138.624h819.328zM1394.94 1391.1l34.3037 179.2
|
||||||
|
c6.27148 29.6963 -16.3838 52.4805 -40.5762 52.4805h-657.536c-29.8242 0 -49.792 -26.8799 -49.792 -49.792v-1015.68c0 -3.19922 2.43262 -3.83984 4.86426 -1.15137c0 0 242.304 290.815 269.184 324.352c26.8809 33.4082 39.168 38.6562 79.3604 38.6562h221.184
|
||||||
|
c30.208 0 47.2324 25.3438 50.3047 40.1924c3.2002 14.8477 28.9277 149.12 34.4316 176.256s-19.3281 54.9121 -44.7998 54.9121h-270.976c-35.9688 0 -61.8242 25.4717 -61.8242 61.3115v39.04c0 35.9678 25.7275 60.416 61.5674 60.416h319.232
|
||||||
|
s46.9756 20.4805 51.0723 39.8076z" />
|
||||||
|
<glyph glyph-name="uniF205" unicode=""
|
||||||
|
d="M1024 1920c493.952 0 896 -401.92 896 -896c0 -493.952 -402.048 -896 -896 -896c-494.08 0 -896 402.048 -896 896c0 494.08 401.92 896 896 896zM218.496 1024c0 -318.848 185.216 -594.432 454.016 -724.992l-384.256 1052.93
|
||||||
|
c-44.6719 -100.224 -69.7598 -211.071 -69.7598 -327.936zM1024 218.496c93.8242 0 183.808 16.1279 267.648 45.5684c-2.17676 3.45508 -4.09668 7.16797 -5.76074 11.2637l-247.552 678.271l-241.92 -702.336c72.1924 -21.248 148.48 -32.7676 227.584 -32.7676z
|
||||||
|
M1134.98 1401.73l291.072 -866.176l80.3838 268.544c34.9443 111.488 61.3125 191.488 61.3125 260.48c0 99.584 -35.8398 168.576 -66.4326 222.08c-40.7031 66.4316 -78.9756 122.624 -78.9756 189.056c0 74.1123 56.1924 142.977 135.168 142.977
|
||||||
|
c3.58398 0 7.04004 -0.384766 10.4961 -0.640625c-143.36 131.328 -334.208 211.456 -544 211.456c-281.472 0 -529.024 -144.256 -673.024 -363.008c18.9443 -0.639648 36.7363 -0.896484 51.8408 -0.896484c84.2236 0 214.655 10.2402 214.655 10.2402
|
||||||
|
c43.3926 2.56055 48.5127 -61.3115 5.24805 -66.4316c0 0 -43.7754 -5.12012 -92.1602 -7.68066l293.12 -872.575l176.256 528.64l-125.439 343.936c-43.3926 2.56055 -84.4805 7.68066 -84.4805 7.68066c-43.2637 2.55957 -38.2715 68.9922 5.12012 66.4316
|
||||||
|
c0 0 132.992 -10.2402 212.225 -10.2402c84.2236 0 214.783 10.2402 214.783 10.2402c43.3926 2.56055 48.5127 -61.3115 5.12012 -66.4316c0 0 -43.6475 -5.12012 -92.2881 -7.68066zM1730.82 1410.56c3.58398 -25.7275 5.50391 -53.248 5.63184 -82.8154
|
||||||
|
c0 -81.792 -15.4883 -173.696 -61.3125 -288.512l-246.144 -711.425c239.488 139.521 400.512 399.104 400.512 696.192c0 140.16 -35.8398 271.872 -98.6875 386.56z" />
|
||||||
|
<glyph glyph-name="uniF472" unicode=""
|
||||||
|
d="M1368.06 1408h-128l-240.129 -768h128l-39.9355 -128h-448l39.9355 128h128l240.129 768h-128l39.9355 128h448z" />
|
||||||
|
<glyph glyph-name="uniF216" unicode=""
|
||||||
|
d="M1791.62 1265.92c0.383789 -2.94434 0.639648 -5.75977 0.639648 -8.7041v-466.943c0 -2.94434 -0.255859 -5.76074 -0.511719 -8.96094c-0.12793 -0.767578 -0.383789 -1.79199 -0.511719 -2.81543c-0.384766 -1.79199 -0.640625 -3.58398 -1.15234 -5.50391
|
||||||
|
c-0.255859 -1.02441 -0.768555 -2.04785 -1.02441 -3.07227c-0.639648 -1.66406 -1.15137 -3.2002 -1.79199 -4.86426c-0.511719 -1.02344 -1.02344 -2.04785 -1.53613 -3.07129c-0.639648 -1.53613 -1.40723 -2.94434 -2.30371 -4.48047
|
||||||
|
c-0.511719 -0.895508 -1.28027 -1.91992 -1.91992 -2.94434c-0.767578 -1.2793 -1.66406 -2.55957 -2.6875 -3.96777c-0.768555 -0.895508 -1.53613 -1.79199 -2.30469 -2.81543c-1.02344 -1.02441 -2.04785 -2.30469 -3.32812 -3.45605
|
||||||
|
c-0.767578 -0.896484 -1.66406 -1.79199 -2.6875 -2.68848c-1.02441 -0.895508 -2.30371 -2.04785 -3.71191 -3.07227c-0.768555 -0.767578 -1.79199 -1.53516 -2.81641 -2.30371l-1.15137 -0.767578l-702.208 -467.072
|
||||||
|
c-11.1367 -7.42383 -23.8086 -11.0078 -36.6084 -11.0078s-25.4717 3.58398 -36.7363 11.2637l-702.208 467.072c-0.255859 0.255859 -0.639648 0.511719 -1.02344 0.767578l-2.94434 2.30469c-1.28027 0.895508 -2.55957 2.04785 -3.71191 3.07129
|
||||||
|
c-0.895508 0.896484 -1.79199 1.79199 -2.6875 2.68848c-1.02441 1.02344 -2.17676 2.30371 -3.2002 3.45605c-0.768555 0.895508 -1.53613 1.79199 -2.30469 2.81543c-0.895508 1.28027 -1.79199 2.56055 -2.6875 3.96875
|
||||||
|
c-0.768555 0.895508 -1.4082 1.91992 -1.91992 2.94336c-0.896484 1.53613 -1.66406 2.94434 -2.30371 4.48047c-0.512695 0.895508 -1.02441 1.91992 -1.53613 3.07129c-0.640625 1.66406 -1.15234 3.2002 -1.66406 4.86426
|
||||||
|
c-0.383789 0.896484 -0.768555 1.91992 -1.02441 3.07227c-0.511719 1.91992 -0.767578 3.71191 -1.15137 5.50391c-0.128906 1.02441 -0.384766 2.04785 -0.512695 2.94434c-0.383789 2.81543 -0.639648 5.75977 -0.639648 8.57617v466.943
|
||||||
|
c0 2.94434 0.255859 5.75977 0.639648 8.7041c0.12793 0.896484 0.383789 1.79199 0.512695 2.81641c0.383789 1.91992 0.639648 3.71191 1.15137 5.50391c0.255859 1.15137 0.640625 2.17578 1.02441 3.2002c0.511719 1.53516 1.02344 3.19922 1.66406 4.86328
|
||||||
|
c0.511719 1.02441 1.02344 2.04785 1.53613 3.2002c0.639648 1.53613 1.40723 2.81641 2.30371 4.48047c0.639648 0.895508 1.28027 1.91992 1.91992 2.94336c0.767578 1.28027 1.79199 2.68848 2.6875 3.96875c0.640625 1.02344 1.4082 1.79199 2.30469 2.81543
|
||||||
|
c1.02344 1.28027 2.04785 2.43164 3.2002 3.58398c0.895508 0.768555 1.79199 1.66406 2.6875 2.68848c1.15234 1.02344 2.43164 2.04785 3.71191 3.07129l2.94434 2.17676c0.383789 0.255859 0.767578 0.639648 1.15137 0.895508l702.208 466.944
|
||||||
|
c22.1445 14.7197 51.0723 14.7197 73.2168 0l702.08 -467.2c0.383789 -0.255859 0.767578 -0.639648 1.15137 -0.896484c0.896484 -0.767578 1.91992 -1.53516 2.81641 -2.30371c1.2793 -0.895508 2.55957 -1.91992 3.71191 -3.07227
|
||||||
|
c1.02344 -0.895508 1.91992 -1.79199 2.6875 -2.6875c1.15234 -1.02441 2.17676 -2.17578 3.32812 -3.45605c0.768555 -0.896484 1.53613 -1.79199 2.30469 -2.81641c0.895508 -1.2793 1.79199 -2.55957 2.6875 -3.96777
|
||||||
|
c0.639648 -0.895508 1.4082 -1.91992 1.91992 -2.94434c0.896484 -1.53516 1.66406 -2.81543 2.30371 -4.35156c0.512695 -1.02441 1.02441 -2.04785 1.53613 -3.2002c0.640625 -1.66406 1.15234 -3.2002 1.79199 -4.73535
|
||||||
|
c0.255859 -1.02441 0.768555 -2.04883 1.02441 -3.2002c0.511719 -1.79199 0.767578 -3.58398 1.15137 -5.50391c0.128906 -0.896484 0.384766 -1.79199 0.512695 -2.81641zM1090.05 1601.28v-307.328l286.208 -190.977l231.168 154.24zM957.952 1601.28l-517.248 -344.064
|
||||||
|
l231.04 -154.24l286.208 191.104v307.2zM387.84 1133.95v-220.416l165.12 110.208zM957.952 446.208v307.328l-286.208 190.976l-231.04 -154.111zM1024 867.84l233.472 155.904l-233.472 155.904l-233.472 -155.904zM1090.05 446.208l517.376 344.064l-231.168 154.111
|
||||||
|
l-286.208 -190.976v-307.2zM1660.29 913.536v220.416l-165.248 -110.208z" />
|
||||||
|
<glyph glyph-name="uniF475" unicode=""
|
||||||
|
d="M1024 1792c424.064 0 768 -343.936 768 -768s-343.936 -768 -768 -768s-768 343.936 -768 768s343.936 768 768 768zM476.16 1340.54l-2.81641 3.96777c-4.60742 -7.93555 -8.83203 -16.1279 -13.1836 -24.3193l4.47949 1.02344l17.5361 6.27246l30.208 2.6875zM1024 384
|
||||||
|
c265.088 0 493.056 162.176 590.208 392.576l-6.52832 10.4961l14.9766 50.8154l-34.6885 25.2158l-25.3438 7.55273l-23.5518 19.8398l-55.8086 -21.1201l-52.7354 -3.07227l-39.9365 29.0566l-39.04 53.5039l-0.767578 32.5117l0.895508 54.2725l5.63184 7.55176
|
||||||
|
l4.86426 18.1758l22.7842 35.0723l13.3125 13.0557l18.6875 20.7363l13.0557 25.5996l36.8643 34.9443l37.7598 -0.383789l27.6484 9.59961l66.4316 7.16797l25.9844 -36.8643l24.1924 -10.4961c-8.44824 39.4248 -20.2246 77.6963 -35.585 114.049l-5.50391 5.11914
|
||||||
|
l-13.4395 -6.65527l-28.9277 -2.68848l-23.8086 -21.248l-25.9834 -35.0723l-50.6885 -11.6475l-23.5518 9.21582l2.6875 40.5762l13.3125 25.2158l46.4639 -2.6875l8.57617 21.8877l-24.0645 26.624l20.6084 8.32031l40.4482 22.0156l14.4639 11.6484
|
||||||
|
c-49.1523 77.6953 -113.664 144.256 -190.721 194.688l-4.35156 -1.79199l20.3516 -17.792l-32.8955 5.24805l-4.6084 -9.34375l21.248 -2.56055l-7.93555 -8.95996l-59.9043 -10.3682l-77.3115 -34.3037l-59.9043 -28.9277l-6.27246 59.6475l16.8965 32.6406
|
||||||
|
l-12.416 21.7598l-45.9521 19.4561l-22.1436 17.1523l32.1279 7.67969l69.1201 16.8955l29.8232 1.66406c-64.7676 22.1445 -132.991 36.7363 -205.056 36.7363c-146.56 0 -280.064 -51.4561 -388.096 -134.656l38.2715 1.15234l47.7441 -12.2881l32 -8.19238
|
||||||
|
l34.8164 7.80859l47.6152 -6.0166l29.9521 7.2959l5.63184 18.0488l28.1602 -2.94434l11.0078 -22.7842l47.6162 4.35254l-74.752 -24.7041l-36.0957 -20.8643l-55.168 -42.2402l13.6963 -14.9756l38.3994 -18.0479l27.3926 -28.0322l33.6641 34.4316l19.4551 37.8887
|
||||||
|
l33.0244 22.6553l33.0244 -16.7676l9.08789 -18.4316l28.9277 10.2393l10.2402 -55.168l20.4795 -20.0957l-74.752 -19.0723l-54.7842 -21.5039l42.752 11.7764l-5.24707 -17.1523l13.5674 -15.3604l11.2646 -7.16797l-45.9521 -18.6875l16.1279 18.8154l-25.9844 -5.63184
|
||||||
|
l-31.2314 -14.8477l-14.208 -16.5117l-34.9443 -19.3281l-25.6006 -20.2246l-9.72754 -23.4238l-32.7676 -26.752l-25.8564 -59.3916l-8.06348 -25.7285l-23.6807 47.4883l-46.208 -0.12793l-38.3994 0.255859l-49.2803 -39.6797l-6.52832 -43.5205l29.6963 -32.3838
|
||||||
|
l57.2158 30.7197l-14.8477 -43.5195l-40.4482 -26.1123l-39.2959 9.47266l-43.5205 18.1758l-49.9199 79.1035l-22.1436 47.2324l-5.24805 16.2559l7.42383 -66.0479l-0.639648 -17.1523l-8.19238 10.2402l-4.99219 16.6396l-9.9834 12.416l-5.12012 22.9121
|
||||||
|
l-0.255859 35.9678l-26.752 46.3359c-17.4082 -58.1113 -29.5684 -118.399 -29.5684 -182.144c0 -295.936 202.88 -543.232 476.16 -616.192l-4.0957 12.6729l-9.60059 137.6l-11.1357 62.8477l-67.3281 65.792l-31.7441 56.3203l-10.624 27.9043l7.67969 16.5117
|
||||||
|
l14.0801 52.9922l7.55273 61.6953l-8.32031 4.73633l-14.9756 -10.8799l-19.9688 9.34375l13.4404 6.27246l59.9043 13.8242l39.4238 17.6631l-2.43262 -26.752l14.5928 24.1924l19.7119 -6.91211l67.7119 -21.6318l48.5117 -33.6641l34.9443 -19.3281l8.31934 -5.50391
|
||||||
|
l-8.19141 -48.7676l33.4082 9.47168l-8.32031 -16.6396l47.3604 -10.1123l48 -3.96777l31.3594 -19.7119l1.28027 -57.3447l-22.7842 -65.4072l-27.6475 -68.0967l-50.1768 -30.8477l-39.9355 -90.8799l-36.0957 5.12012l17.1514 -23.4238l-1.91992 -16.5127
|
||||||
|
l-33.2803 -26.4961c19.4561 -1.79199 38.1445 -5.8877 57.9844 -5.8877z" />
|
||||||
|
<glyph glyph-name="uniF432" unicode=""
|
||||||
|
d="M1408 640l-448 448l-448 -448l-128 128l576 576l576 -576z" />
|
||||||
|
<glyph glyph-name="uniF210" unicode=""
|
||||||
|
d="M1024 2048c565.632 0 1024 -458.496 1024 -1024c0 -565.632 -458.368 -1024 -1024 -1024c-100.864 0 -198.016 14.7197 -290.176 42.1123c38.7842 61.4395 81.2793 140.288 103.04 219.264c12.6719 45.5684 72.0635 281.6 72.0635 281.6
|
||||||
|
c35.7119 -67.9678 139.648 -127.743 250.24 -127.743c329.088 0 552.448 300.159 552.448 701.823c0 303.744 -257.28 586.624 -648.192 586.624c-486.527 0 -731.904 -348.8 -731.904 -639.744c0 -176.128 66.5605 -332.928 209.664 -391.168
|
||||||
|
c23.4248 -9.59961 44.416 -0.511719 51.2002 25.4727c4.73633 18.0479 16 63.4873 20.9922 82.1758c6.78418 25.7275 4.0957 34.6875 -14.8477 57.2158c-41.0879 48.6406 -67.4561 111.488 -67.4561 200.704c0 258.816 193.536 490.496 504.063 490.496
|
||||||
|
c274.944 0 426.112 -168.064 426.112 -392.448c0 -295.296 -130.432 -544.384 -324.608 -544.384c-107.136 0 -187.264 88.5762 -161.664 197.12c30.7207 129.664 90.4961 269.824 90.4961 363.392c0 83.8398 -44.9277 153.729 -138.111 153.729
|
||||||
|
c-109.44 0 -197.504 -113.28 -197.504 -265.088c0 -96.6406 32.7676 -162.049 32.7676 -162.049s-112.128 -474.88 -131.712 -557.951c-18.4316 -77.8242 -20.7363 -163.456 -17.9199 -235.137c-360.832 158.336 -612.992 518.784 -612.992 937.984
|
||||||
|
c0 565.504 458.496 1024 1024 1024z" />
|
||||||
|
<glyph glyph-name="uniF437" unicode=""
|
||||||
|
d="M1280 1792c141.312 0 256 -114.688 256 -256v-1024c0 -141.312 -114.688 -256 -256 -256h-512c-141.312 0 -256 114.688 -256 256v1024c0 141.312 114.688 256 256 256h512zM1024 384c70.7842 0 128 57.2158 128 128s-57.2158 128 -128 128
|
||||||
|
c-70.6562 0 -128 -57.2158 -128 -128s57.3438 -128 128 -128zM1408 768v768h-768v-768h768z" />
|
||||||
|
<glyph glyph-name="uniF468" unicode=""
|
||||||
|
d="M256 256v1536h256v-1536h-256zM1536 1664h256v-768h-256c-256 0 -256 128 -512 128s-256 -128 -384 -128v768c128 0 128 128 384 128s256 -128 512 -128z" />
|
||||||
|
<glyph glyph-name="uniF107" unicode=""
|
||||||
|
d="M1088 1792c176.768 0 320 -143.232 320 -320v-384c0 -131.2 -78.9756 -243.584 -192 -292.992v150.912c39.04 35.2002 64 85.6318 64 142.08v384c0 105.856 -86.1436 192 -192 192s-192 -86.1436 -192 -192v-384c0 -56.4482 24.96 -106.88 64 -142.08v-150.912
|
||||||
|
c-112.896 49.4082 -192 161.792 -192 292.992v384c0 176.768 143.232 320 320 320zM960 1380.99c112.896 -49.4082 192 -161.792 192 -292.992v-384c0 -176.768 -143.232 -320 -320 -320s-320 143.232 -320 320v384c0 131.2 79.1035 243.584 192 292.992v-150.912
|
||||||
|
c-39.04 -35.2002 -64 -85.6318 -64 -142.08v-384c0 -105.856 86.1436 -192 192 -192s192 86.1436 192 192v384c0 56.4482 -24.96 106.88 -64 142.08v150.912z" />
|
||||||
|
<glyph glyph-name="uniF442" unicode=""
|
||||||
|
d="M1280 640v256l128 128v-512h-896v896h512l-128 -128h-256v-640h640zM1024 1664h640v-640h-128v421.504l-549.504 -549.504l-90.4961 90.4961l549.504 549.504h-421.504v128z" />
|
||||||
|
<glyph glyph-name="uniF221" unicode=""
|
||||||
|
d="M1664 1024c0 -55.9355 -35.9678 -102.912 -85.8877 -120.32c13.8232 -20.6074 21.8877 -45.0557 21.8877 -71.6797c0 -55.8076 -35.9678 -102.784 -85.8877 -120.32c13.8232 -20.6074 21.8877 -45.0557 21.8877 -71.6797c0 -70.6562 -57.3438 -128 -128 -128h-64
|
||||||
|
c70.6562 0 128 -57.3438 128 -128s-57.3438 -128 -128 -128h-448c-192 0 -256 128 -384 128h-128v640h192c128 0 320 256 320 640c0 0 0 128 64 128s192 -144 192 -320c0 -192 -32 -320 -32 -320h416c70.6562 0 128 -57.3438 128 -128z" />
|
||||||
|
<glyph glyph-name="uniF50A" unicode=""
|
||||||
|
d="M1856 1024c35.3281 0 64 -28.6719 64 -64s-28.6719 -64 -64 -64h-204.928c-9.85645 -48.7676 -26.624 -94.5918 -46.8486 -138.624c116.608 -134.528 187.776 -309.376 187.776 -501.376v-64c0 -35.2002 -28.6719 -64 -64 -64s-64 28.7998 -64 64v64
|
||||||
|
c0 144.896 -48.7676 277.888 -130.048 385.152c-116.736 -155.265 -300.672 -257.152 -509.952 -257.152c-208.768 0 -392.448 101.504 -509.312 256.128c-81.2803 -106.88 -130.688 -239.231 -130.688 -384.128v-64c0 -35.2002 -28.6719 -64 -64 -64s-64 28.7998 -64 64v64
|
||||||
|
c0 192 71.2959 366.72 187.904 501.376c-20.3525 44.0322 -36.9922 89.8564 -46.9766 138.624h-204.928c-35.3281 0 -64 28.6719 -64 64s28.6719 64 64 64h192c0 61.6963 12.1602 119.936 29.0557 176c-98.1758 129.024 -157.056 289.408 -157.056 464v64
|
||||||
|
c0 35.3281 28.6719 64 64 64s64 -28.6719 64 -64v-64c0 -353.408 286.592 -640 640 -640c353.536 0 640 286.592 640 640v64c0 35.3281 28.6719 64 64 64s64 -28.6719 64 -64v-64c0 -173.952 -58.4961 -333.824 -156.032 -462.592
|
||||||
|
c17.2803 -56.3203 28.0322 -115.328 28.0322 -177.408h192zM1024 1152c-208.896 0 -388.352 126.08 -467.84 305.92c116.864 126.08 282.496 206.08 467.84 206.08c185.472 0 350.976 -80 467.84 -206.08c-79.4883 -179.84 -258.815 -305.92 -467.84 -305.92z" />
|
||||||
|
<glyph glyph-name="uniF455" unicode=""
|
||||||
|
d="M1024 1792c424.064 0 768 -343.936 768 -768s-343.936 -768 -768 -768c-424.192 0 -768 343.936 -768 768s343.808 768 768 768zM1024 1536c-70.7842 0 -128 -57.3438 -128 -128s57.2158 -128 128 -128c70.6562 0 128 57.3438 128 128s-57.3438 128 -128 128zM1280 512
|
||||||
|
v128h-160v512h-320.128v-128h128.128v-384h-160v-128h512z" />
|
||||||
|
<glyph glyph-name="uniF223" unicode=""
|
||||||
|
d="M1105.28 1232.51v92.9287c0 44.1592 -36.4805 79.8711 -81.2803 79.8711s-81.2803 -35.7119 -81.2803 -79.8711l-0.383789 -481.024c-2.55957 -184.192 -155.008 -332.416 -342.912 -332.416c-189.696 0 -343.424 150.912 -343.424 337.28v209.151h262.784v-206.592
|
||||||
|
c0 -43.9043 36.3516 -79.7441 81.2803 -79.7441c44.9277 0 81.2793 35.7119 81.2793 79.7441v487.168c6.65625 180.48 157.185 324.992 342.656 324.992c186.112 0 337.152 -145.536 342.656 -327.04v-106.624l-156.416 -45.8242zM1529.22 1058.43h262.784v-209.151
|
||||||
|
c0 -186.368 -153.728 -337.28 -343.424 -337.28c-188.544 0 -341.632 149.376 -343.296 334.08v210.304l104.96 -48l156.288 45.8242v-211.84c0 -44.2881 36.3516 -80 81.4072 -80c44.9287 0 81.2803 35.7119 81.2803 80v216.063z" />
|
||||||
|
<glyph glyph-name="uniF212" unicode=""
|
||||||
|
d="M1658.75 1791.87c184.192 -5.37598 270.976 -123.776 260.352 -355.072c-7.93555 -172.928 -129.792 -409.472 -365.439 -710.016c-243.584 -313.729 -449.792 -470.784 -618.368 -470.784c-104.448 0 -192.896 95.6162 -264.96 286.72
|
||||||
|
c-48.2559 175.232 -96.5117 350.336 -144.64 525.568c-53.6318 190.976 -111.232 286.592 -172.672 286.592c-13.4404 0 -60.416 -27.7764 -140.673 -83.584l-84.3516 107.648c88.4482 77.0557 175.616 154.111 261.504 231.168
|
||||||
|
c117.888 100.991 206.464 154.111 265.472 159.487c139.521 13.3125 225.28 -81.2793 257.536 -283.392c34.8164 -218.24 58.8799 -353.92 72.4482 -407.04c40.1924 -180.992 84.4805 -271.36 132.736 -271.36c37.5039 0 93.8232 58.752 169.088 176.128
|
||||||
|
c75.0078 117.376 115.2 206.849 120.576 268.16c10.624 101.376 -29.4404 152.192 -120.576 152.192c-43.0078 0 -87.2959 -9.98438 -132.736 -29.1846c88.0645 285.952 256.512 424.704 504.704 416.769z" />
|
||||||
|
<glyph glyph-name="uniF206" unicode=""
|
||||||
|
d="M571.904 570.112c-36.4805 0 -71.6807 -1.02441 -110.208 -1.02441c-127.36 0 -240.513 -32 -333.696 -83.3281v484.864c78.0801 -78.208 189.696 -126.208 329.984 -126.336c20.2236 0 39.6797 1.02344 58.8799 2.43164
|
||||||
|
c-18.8164 -35.9678 -32.2559 -76.1602 -32.2559 -118.271c0 -70.9121 39.04 -111.36 87.2959 -158.336zM575.232 937.088c-163.584 4.86426 -319.104 155.008 -347.265 369.792c-28.2881 214.912 81.4082 379.264 244.992 374.4
|
||||||
|
c163.584 -4.86426 303.488 -181.12 331.648 -396.032c28.2881 -214.784 -65.9199 -353.024 -229.376 -348.16zM965.504 217.856c4.99219 -21.248 7.80762 -43.1367 7.80762 -65.5361c0 -8.19238 -0.639648 -16.2559 -1.02344 -24.3203h-588.288
|
||||||
|
c-115.328 0 -211.712 76.7998 -243.712 181.504c74.8799 110.72 228.224 189.824 401.408 187.904c56.832 -0.640625 109.823 -9.72852 157.952 -25.3438c132.352 -91.9043 238.976 -149.376 265.855 -254.208zM1920 1536h-256v256h-128v-256h-256v-128h256v-256h128v256
|
||||||
|
h256v-1024.13c0 -141.312 -114.688 -256 -256 -256h-506.624c2.55957 16.7676 4.22363 33.5361 4.22363 50.3037c0 183.937 -39.6797 276.48 -235.647 423.424c-56.1924 42.2402 -178.688 128.769 -178.688 186.881c0 67.9678 19.4561 101.632 121.856 181.504
|
||||||
|
c104.96 82.0479 179.328 190.208 179.328 324.352c0 146.176 -59.7764 278.912 -172.16 343.296h159.36l135.68 142.464h-606.977c-174.336 0 -332.159 -72.832 -436.352 -181.376v65.2803c0 141.312 114.688 256 256 256h1280c141.312 0 256 -114.688 256 -256v-128z" />
|
||||||
|
<glyph glyph-name="uniF407" unicode=""
|
||||||
|
d="M1280 1536l256 -128v-128h-128h-128h-128h-128h-128h-128h-128h-128h-128v128l256 128c0 70.7842 57.3438 128 128 128h384c70.7842 0 128 -57.2158 128 -128zM1088 1408c35.3281 0 64 28.6719 64 64s-28.6719 64 -64 64h-256c-35.3281 0 -64 -28.6719 -64 -64
|
||||||
|
s28.6719 -64 64 -64h256zM1280 1216h128v-704c0 -70.7842 -57.2158 -128 -128 -128h-640c-70.6562 0 -128 57.2158 -128 128v704h128v-704h128v704h128v-704h128v704h128v-704h128v704z" />
|
||||||
|
<glyph glyph-name="uniF414" unicode=""
|
||||||
|
d="M1996.03 601.984c116.992 -190.208 29.6953 -345.984 -193.536 -345.984h-1556.99c-223.231 0 -310.528 155.776 -193.536 345.984l759.552 1236.99c116.864 190.336 308.097 190.336 424.961 0zM1024 512c70.7842 0 128 57.2158 128 128s-57.2158 128 -128 128
|
||||||
|
c-70.6562 0 -128 -57.2158 -128 -128s57.3438 -128 128 -128zM1113.22 896l51.584 640h-281.6l51.2002 -640h178.815z" />
|
||||||
|
<glyph glyph-name="uniF50E" unicode=""
|
||||||
|
d="M384 896v256h1280v-256h-1280z" />
|
||||||
|
<glyph glyph-name="uniF461" unicode=""
|
||||||
|
d="M1024 384l-647.552 612.992c-149.376 141.312 -161.408 383.231 -27.1367 540.288c134.4 157.184 364.416 169.855 513.792 28.5439l160.896 -152.32l160.768 152.32c149.248 141.184 379.393 128.64 513.792 -28.5439
|
||||||
|
c134.656 -157.057 122.368 -398.977 -27.0078 -540.416z" />
|
||||||
|
<glyph glyph-name="uniF470" unicode=""
|
||||||
|
d="M1536 1152c70.7842 0 128 -57.3438 128 -128v-640c0 -70.7842 -57.2158 -128 -128 -128h-1024c-70.6562 0 -128 57.2158 -128 128v640c0 70.6562 57.3438 128 128 128v128c0 282.752 229.248 512 512 512s512 -229.248 512 -512v-128zM768 1152h512v128
|
||||||
|
c0 141.312 -114.688 256 -256 256s-256 -114.688 -256 -256v-128z" />
|
||||||
|
<glyph glyph-name="uniF50C" unicode=""
|
||||||
|
d="M1479.55 819.2c98.5605 -32 203.137 -51.2002 312.448 -51.2002v-512c-848.256 0 -1536 687.744 -1536 1536h512c0 -162.048 38.5283 -314.752 105.856 -450.816l-189.185 -189.184c136.192 -235.008 344.96 -422.4 595.328 -532.224z" />
|
||||||
|
<glyph glyph-name="uniF220" unicode=""
|
||||||
|
d="M1856.77 834.048c32.3848 -65.6641 50.6885 -138.88 50.3047 -217.344c0 -269.696 -218.88 -488.704 -488.576 -488.704c-83.584 0 -161.92 21.376 -230.656 58.1123c-50.4316 -8.83203 -102.016 -13.8242 -154.496 -13.8242
|
||||||
|
c-465.279 0 -842.624 377.216 -842.624 842.496c0 58.2402 6.14453 114.688 17.2803 169.6c-42.4961 72.1924 -67.0723 156.8 -67.0723 246.912c0 269.824 218.88 488.704 488.704 488.704c95.7441 0 184.704 -27.3916 260.225 -75.0078
|
||||||
|
c46.4639 7.80762 94.5918 12.416 143.871 12.416c465.408 0 842.624 -377.344 842.624 -842.624c0 -62.0801 -6.65527 -122.752 -19.584 -180.736zM1466.11 612.096c38.9121 55.5527 58.624 118.656 58.752 188.16c0 58.2402 -11.2646 107.904 -34.1758 148.353
|
||||||
|
c-22.9121 40.3193 -54.7842 73.8555 -95.2324 100.224c-39.168 25.7275 -87.8076 48.1279 -143.744 66.0479c-55.4238 17.9199 -118.271 34.1758 -186.496 48.6396c-53.7598 12.416 -93.0557 21.8887 -116.479 28.6729c-23.04 6.14355 -45.4404 15.2314 -67.8398 26.3672
|
||||||
|
c-21.8887 10.624 -38.5283 23.5527 -50.4326 38.0166c-11.1357 13.9521 -16.7676 30.3359 -16.7676 49.2803c0 31.2314 16.8955 57.4717 52.2236 80.5117c36.3525 23.5518 85.6318 35.9678 146.048 35.9678c64.8965 0 112.384 -11.2637 140.544 -32.6396
|
||||||
|
c29.1846 -21.6318 54.2725 -53.6318 75.5205 -93.3125c18.5596 -31.3594 34.9434 -53.248 50.6875 -67.2002c16.3838 -14.5918 40.5762 -22.3994 71.9365 -22.3994c34.9434 0 63.8721 12.416 86.9121 36.4795c23.04 23.4248 34.6875 50.8164 34.6875 81.1523
|
||||||
|
c0 31.3604 -9.08789 63.3604 -25.2158 95.7441c-17.2803 32.3838 -44.7998 63.1035 -81.9199 92.2881c-36.8643 28.5439 -83.8398 52.0957 -139.008 69.5039c-55.8086 16.7676 -121.729 25.5996 -196.736 25.5996c-94.7197 0 -177.536 -13.1836 -247.424 -39.04
|
||||||
|
c-70.5283 -26.3682 -125.952 -64.3838 -163.584 -113.664c-38.0166 -49.2793 -56.96 -106.496 -56.96 -170.239c0 -67.2002 17.792 -123.776 54.2715 -169.217c35.0723 -44.1592 83.9688 -79.8721 144.385 -105.728c58.752 -25.2158 133.247 -47.3604 220.672 -66.0479
|
||||||
|
c64.2559 -13.3125 115.712 -26.2402 154.239 -38.0166c36.8643 -11.2637 67.3281 -27.9033 89.9844 -49.2793c22.1436 -20.7363 32.6396 -46.9766 32.6396 -80.1279c0 -42.3682 -20.2236 -76.8008 -62.0801 -105.345c-43.1357 -29.0557 -100.352 -43.9033 -169.728 -43.9033
|
||||||
|
c-50.9443 0 -92.416 7.16797 -122.624 21.6318c-30.3359 13.9521 -54.2715 32.5117 -70.5283 54.2715c-17.2793 22.6562 -33.4072 51.4561 -48.6396 85.7607c-13.4404 31.3594 -29.5684 55.8076 -49.2803 72.0635c-20.7354 17.2803 -45.3115 25.7285 -74.4961 25.7285
|
||||||
|
c-35.0713 0 -64.7676 -10.3682 -87.8076 -32.3848c-23.5518 -21.8877 -35.3281 -48.6396 -35.3281 -79.6152c0 -48.8965 17.9199 -100.608 53.8877 -152.192c35.0723 -50.9443 82.3047 -92.416 138.752 -123.136c79.3604 -41.8564 180.864 -63.1045 301.696 -63.1045
|
||||||
|
c100.736 0 189.44 15.4883 263.04 46.208c75.3926 30.9766 132.225 74.4961 171.648 129.92z" />
|
||||||
|
<glyph glyph-name="uniF415" unicode=""
|
||||||
|
d="M1408 1024h512v-256h-310.016c-98.8164 -225.92 -323.584 -384 -585.984 -384c-176.768 0 -335.488 72.832 -451.072 188.928l0.640625 0.640625c-50.0488 50.0479 -50.0488 130.943 0 180.991c50.0479 50.0488 130.943 50.1768 180.991 0
|
||||||
|
c69.376 -69.6318 163.456 -114.56 269.44 -114.56c212.096 0 384 171.904 384 384zM1024 1408c-212.096 0 -384 -171.904 -384 -384h-512v256h310.016c98.8164 225.92 323.712 384 585.984 384c176.896 0 335.488 -72.96 451.072 -188.928
|
||||||
|
c50.0479 -50.0479 50.0479 -130.944 0 -180.992s-130.944 -50.0479 -180.992 0l-0.639648 -0.639648c-69.376 69.6318 -163.328 114.56 -269.44 114.56zM832 1024c0 106.112 86.0156 192 192 192c106.112 0 192 -85.8877 192 -192s-85.8877 -192 -192 -192
|
||||||
|
c-105.984 0 -192 85.8877 -192 192z" />
|
||||||
|
<glyph glyph-name="uniF207" unicode=""
|
||||||
|
d="M604.672 256h-329.216v990.72h329.216v-990.72zM440.064 1381.89h-2.04883c-110.464 0 -182.016 76.1602 -182.016 171.137c0 97.1514 73.5996 171.136 186.368 171.136c112.512 0 181.888 -74.1123 184.063 -171.136c0 -94.9766 -71.5518 -171.137 -186.367 -171.137z
|
||||||
|
M1792 256h-329.216v530.048c0 133.12 -47.3604 224 -166.656 224c-91.1357 0 -145.28 -61.1836 -169.088 -120.32c-8.57617 -21.2471 -10.752 -50.9434 -10.752 -80.5117v-553.216h-329.344s4.35156 897.792 0 990.72h329.344v-140.416
|
||||||
|
c43.7764 67.4561 121.984 163.584 296.448 163.584c216.704 0 379.264 -141.567 379.264 -445.823v-568.064z" />
|
||||||
|
<glyph glyph-name="uniF500" unicode=""
|
||||||
|
d="M2048 0h-1920l960 959.872z" />
|
||||||
|
<glyph glyph-name="uniF302" unicode=""
|
||||||
|
d="M1024 1536h512v-512l-768 -768l-512 512zM1280 1152c70.7842 0 128 57.2158 128 128s-57.2158 128 -128 128s-128 -57.2158 -128 -128s57.2158 -128 128 -128z" />
|
||||||
|
<glyph glyph-name="uniF108" unicode=""
|
||||||
|
d="M1664 1536c141.312 0 256 -114.688 256 -256v-384c0 -141.312 -114.688 -256 -256 -256h-128v-448l-448 448h-331.008l128 128h395.008c211.712 0 384 172.288 384 384v384zM1280 1792c141.312 0 256 -114.688 256 -256v-384c0 -141.312 -114.688 -256 -256 -256h-448
|
||||||
|
l-448 -448v448h-128c-141.312 0 -256 114.688 -256 256v384c0 141.312 114.688 256 256 256h1024z" />
|
||||||
|
<glyph glyph-name="uniF405" unicode=""
|
||||||
|
d="M1536 1408l-320 -320l320 -320l-128 -128l-320 320l-320 -320l-128 128l320 320l-320 320l128 128l320 -320l320 320z" />
|
||||||
|
<glyph glyph-name="uniF501" unicode=""
|
||||||
|
d="M0 128v1920l960 -960z" />
|
||||||
|
<glyph glyph-name="uniF50D" unicode=""
|
||||||
|
d="M1024.13 896c-105.984 0 -192.128 86.0156 -192.128 192v512c0 105.856 86.1436 192 192.128 192c106.112 0 191.872 -86.1436 191.872 -192v-512c0 -105.984 -85.7598 -192 -191.872 -192zM1401.47 1024h192c-27.3916 -244.48 -206.464 -441.984 -441.472 -496v-272
|
||||||
|
h-256v272c-234.88 54.0156 -414.08 251.52 -441.472 496h192c30.5918 -181.504 187.52 -320 377.472 -320c190.208 0 347.008 138.496 377.472 320z" />
|
||||||
|
<glyph glyph-name="uniF503" unicode=""
|
||||||
|
d="M2048 2048v-1920l-960 960z" />
|
||||||
|
<glyph glyph-name="uniF101" unicode=""
|
||||||
|
d="M1024 1792c424.064 0 768 -343.936 768 -768s-343.936 -768 -768 -768s-768 343.936 -768 768s343.936 768 768 768zM1024 768c141.312 0 256 114.688 256 256s-114.688 256 -256 256s-256 -114.688 -256 -256s114.688 -256 256 -256z" />
|
||||||
|
<glyph glyph-name="uniF204" unicode=""
|
||||||
|
d="M1182.21 1271.81h328.704l-14.4639 -302.72h-314.24v-841.088h-320.128v841.088h-222.08v302.72h222.08v258.561c0 203.008 131.456 389.632 434.176 389.632c122.496 0 212.992 -11.6484 212.992 -11.6484l-7.04004 -282.624s-92.5439 0.640625 -193.536 0.640625
|
||||||
|
c-108.928 0 -126.464 -50.3037 -126.464 -133.504c0 -12.416 0 -15.3604 0 -13.9521v-207.104z" />
|
||||||
|
<glyph glyph-name="uniF444" unicode=""
|
||||||
|
d="M1600 640c-70.7842 0 -128 -57.2158 -128 -128s57.2158 -128 128 -128h64v-128h-1024c-141.312 0 -256 114.688 -256 256v1024c0 141.312 114.688 256 256 256h1024v-1152h-64zM640 384h817.92c-30.7197 34.0479 -49.9199 78.5918 -49.9199 128
|
||||||
|
s19.2002 93.9521 49.9199 128h-817.92c-70.6562 0 -128 -57.2158 -128 -128s57.3438 -128 128 -128z" />
|
||||||
|
<glyph glyph-name="uniF416" unicode=""
|
||||||
|
d="M1088 1792c176.768 0 320 -143.232 320 -320v-640c0 -247.424 -200.576 -448 -448 -448s-448 200.576 -448 448v320h128v-320c0 -176.768 143.232 -320 320 -320c176.64 0 320 143.232 320 320v640c0 105.984 -86.0156 192 -192 192c-106.112 0 -192 -86.0156 -192 -192
|
||||||
|
v-512c0 -35.3281 28.6719 -64 64 -64s64 28.6719 64 64v451.968h128v-451.968c0 -105.984 -86.0156 -192 -192 -192c-106.112 0 -192 86.0156 -192 192v512c0 176.768 143.232 320 320 320z" />
|
||||||
|
<glyph glyph-name="uniF459" unicode=""
|
||||||
|
d="M1920 1664v-1280l-768 480v-480l-1024 640l1024 640v-480z" />
|
||||||
|
<glyph glyph-name="uniF441" unicode=""
|
||||||
|
d="M1664 1024c141.312 0 256 -114.688 256 -256s-114.688 -256 -256 -256h-512v256h256l-384 384l-384 -384h256v-256h-512c-141.312 0 -256 114.688 -256 256s114.688 256 256 256h6.40039c-4.09668 20.7363 -6.40039 42.1123 -6.40039 64c0 176.768 143.232 320 320 320
|
||||||
|
c89.3438 0 169.984 -36.7363 227.968 -95.8721c60.7998 131.84 193.408 223.872 348.032 223.872c211.968 0 384 -171.904 384 -384c0 -45.1836 -9.21582 -87.8076 -23.5518 -128h23.5518z" />
|
||||||
|
<glyph glyph-name="uniF506" unicode=""
|
||||||
|
d="M768 1920l489.344 -489.472l-640 -640l-268.928 269.056c-49.792 49.792 -49.792 131.2 0 180.992l292.864 292.735l-1.28027 2.68848s128 128 128 384zM1738.24 565.76c33.1514 -32.7676 53.7598 -78.208 53.7598 -128.64c0 -99.9678 -81.1523 -181.12 -181.12 -181.12
|
||||||
|
c-50.4316 0 -95.7441 20.6084 -128.64 53.7598l-330.24 330.24v128l-64 64c-35.2002 35.2002 -104.704 23.2959 -154.496 -26.4961l-75.0078 -75.0078c-49.792 -49.792 -131.2 -49.792 -180.992 0l-14.8477 14.8477l640 640l14.8477 -14.8477
|
||||||
|
c49.792 -49.792 49.792 -131.2 0 -180.992l-75.0078 -75.0078c-49.792 -49.792 -61.6963 -119.296 -26.4961 -154.496l64 -64h128zM1610.88 373.12c35.3281 0 64 28.6719 64 64s-28.6719 64 -64 64s-64 -28.6719 -64 -64s28.6719 -64 64 -64z" />
|
||||||
|
<glyph glyph-name="uniF105" unicode=""
|
||||||
|
d="M1408 1408c0 -167.04 -107.264 -307.584 -256 -360.448v-535.552l-256 -128v663.552c-148.864 52.8643 -256 193.408 -256 360.448c0 212.096 171.904 384 384 384c211.968 0 384 -171.904 384 -384z" />
|
||||||
|
<glyph glyph-name="uniF473" unicode=""
|
||||||
|
d="M384 1664h1280v-1280h-1280v1280zM768 1408c-70.6562 0 -128 -57.3438 -128 -128s57.3438 -128 128 -128s128 57.3438 128 128s-57.3438 128 -128 128zM1536 512v576l-128 192l-448 -672l-192 288l-256 -384h1024z" />
|
||||||
|
<glyph glyph-name="uniF452" unicode=""
|
||||||
|
d="M512 1664l1024 -640l-1024 -640v1280z" />
|
||||||
|
<glyph glyph-name="uniF408" unicode=""
|
||||||
|
d="M1792 1150.72l-475.904 -329.983l182.528 -535.04l-474.624 331.903l-474.624 -331.903l182.528 535.04l-475.904 329.983l587.52 -1.02344l180.48 535.68l180.48 -535.68z" />
|
||||||
|
<glyph glyph-name="uniF450" unicode=""
|
||||||
|
d="M768 1024l1024 640v-1280zM256 384v1280h384v-1280h-384z" />
|
||||||
|
<glyph glyph-name="uniF517" unicode=""
|
||||||
|
d="M1408 1152l384 384v-1024l-384 384v-256c0 -70.7842 -57.2158 -128 -128 -128h-896c-70.6562 0 -128 57.2158 -128 128v768c0 70.6562 57.3438 128 128 128h896c70.7842 0 128 -57.3438 128 -128v-256z" />
|
||||||
|
<glyph glyph-name="uniF106" unicode=""
|
||||||
|
d="M256 896v640h640v-640c0 -282.752 -229.248 -512 -512 -512v256c141.312 0 256 114.688 256 256h-384zM1152 1536h640v-640c0 -282.752 -229.248 -512 -512 -512v256c141.312 0 256 114.688 256 256h-384v640z" />
|
||||||
|
<glyph glyph-name="uniF208" unicode=""
|
||||||
|
d="M1664 1920c141.312 0 256 -114.688 256 -256v-1280c0 -141.312 -114.688 -256 -256 -256h-1280c-141.312 0 -256 114.688 -256 256v1280c0 141.312 114.688 256 256 256h1280zM663.168 384v792.96h-263.552v-792.96h263.552zM531.328 1285.25
|
||||||
|
c91.9043 0 149.12 60.9277 149.12 136.96c-1.66406 77.6963 -57.2158 136.96 -147.328 136.96c-90.2402 0 -149.12 -59.2637 -149.12 -136.96c0 -76.0322 57.2158 -136.96 145.664 -136.96h1.66406zM1613.44 384v454.656c0 243.456 -130.049 356.863 -303.488 356.863
|
||||||
|
c-139.776 0 -202.496 -76.9277 -237.44 -130.943v112.384h-263.552c3.45605 -74.3682 0 -792.96 0 -792.96h263.552v442.88c0 23.6797 1.79199 47.3604 8.57617 64.1279c19.0723 47.3604 62.4639 96.3838 135.296 96.3838c95.4883 0 133.504 -72.7031 133.504 -179.199
|
||||||
|
v-424.192h263.553z" />
|
||||||
|
<glyph glyph-name="uniF304" unicode=""
|
||||||
|
d="M1024 1152c-141.312 0 -256 114.688 -256 256s114.688 256 256 256s256 -114.688 256 -256s-114.688 -256 -256 -256zM1152 1024c211.968 0 384 -171.904 384 -384v-256h-1024v256c0 212.096 172.032 384 384 384h256z" />
|
||||||
|
<glyph glyph-name="uniF225" unicode=""
|
||||||
|
d="M655.104 1857.54l368.896 -307.968l-531.456 -328.192l-364.544 291.84zM128 929.536l364.544 291.84l531.456 -328.064l-368.896 -308.096zM1024 893.312l531.456 328.064l364.544 -291.84l-527.232 -344.32zM1920 1513.22l-364.544 -291.84l-531.456 328.192
|
||||||
|
l368.768 307.968zM1025.02 826.88l369.92 -306.944l158.464 103.297v-115.713l-528.384 -317.056l-528.257 317.056v115.713l158.336 -103.297z" />
|
||||||
|
<glyph glyph-name="uniF103" unicode=""
|
||||||
|
d="M1152 1408h896v-896h-896v896zM128 1024v384h896v-384h-896zM640 512v384h384v-384h-384zM128 512v384h384v-384h-384z" />
|
||||||
|
<glyph glyph-name="uniF431" unicode=""
|
||||||
|
d="M1408 1280l128 -128l-576 -576l-576 576l128 128l448 -448z" />
|
||||||
|
<glyph glyph-name="uniF200" unicode=""
|
||||||
|
d="M1024 2048c565.504 0 1024 -458.496 1024 -1024c0 -452.224 -293.12 -835.712 -699.776 -971.392c-51.9678 -9.98438 -70.3994 21.7598 -70.3994 49.2793c0 33.4082 1.2793 144 1.2793 280.704c0 95.7441 -32.7676 158.208 -69.5039 189.696
|
||||||
|
c228.097 25.3438 467.456 112 467.456 505.344c0 111.744 -39.5518 203.136 -105.088 274.688c10.4961 25.8555 45.6963 130.048 -10.2402 270.976c0 0 -85.8877 27.5205 -281.344 -104.96c-81.792 22.7842 -169.344 34.0479 -256.384 34.4316
|
||||||
|
c-87.04 -0.383789 -174.592 -11.6475 -256.384 -34.4316c-195.584 132.48 -281.601 104.96 -281.601 104.96c-55.6797 -140.928 -20.4795 -244.992 -9.85547 -270.976c-65.5361 -71.5527 -105.472 -162.944 -105.472 -274.688c0 -392.32 239.104 -480.384 466.432 -506.112
|
||||||
|
c-29.3125 -25.7275 -55.6797 -70.6553 -65.0244 -136.96c-58.2393 -26.2393 -206.72 -71.2959 -297.983 85.248c0 0 -54.1445 98.1768 -156.929 105.473c0 0 -100.096 1.2793 -7.04004 -62.208c0 0 67.0723 -31.4883 113.664 -150.017c0 0 60.0322 -198.912 344.96 -137.216
|
||||||
|
c0.512695 -85.248 1.4082 -149.76 1.4082 -173.952c0 -27.2637 -18.6875 -58.752 -69.8877 -49.5361c-406.912 135.425 -700.288 519.168 -700.288 971.648c0 565.504 458.496 1024 1024 1024z" />
|
||||||
|
<glyph glyph-name="uniF421" unicode=""
|
||||||
|
d="M384 896v256h1152v-256h-1152z" />
|
||||||
|
<glyph glyph-name="uniF454" unicode=""
|
||||||
|
d="M640 896v128h-512v256h512v128l384 -256zM1536 2048c141.312 0 256 -114.688 256 -256v-1536c0 -141.312 -114.688 -256 -256 -256h-1024c-141.312 0 -256 114.688 -256 256v640h256v-384h1024v1280h-1024v-384h-256v384c0 141.312 114.688 256 256 256h1024zM1024 128
|
||||||
|
c70.7842 0 128 57.2158 128 128s-57.2158 128 -128 128c-70.6562 0 -128 -57.2158 -128 -128s57.3438 -128 128 -128z" />
|
||||||
|
<glyph glyph-name="uniF213" unicode=""
|
||||||
|
d="M1536 1664c211.968 0 384 -171.904 384 -384v-512c0 -212.096 -172.032 -384 -384 -384h-1024c-212.096 0 -384 171.904 -384 384v512c0 212.096 171.904 384 384 384h1024zM768 640l640 384l-640 384v-768z" />
|
||||||
|
<glyph glyph-name="uniF401" unicode=""
|
||||||
|
d="M1297.15 878.848l494.848 -494.848l-128 -128l-494.848 494.848c-94.8486 -68.9912 -210.816 -110.848 -337.152 -110.848c-318.08 0 -576 257.92 -576 576s257.92 576 576 576s576 -257.92 576 -576c0 -126.336 -41.8564 -242.304 -110.848 -337.152zM832 768
|
||||||
|
c247.552 0 448 200.576 448 448s-200.448 448 -448 448c-247.424 0 -448 -200.576 -448 -448s200.576 -448 448 -448zM512 1152v128h640v-128h-640z" />
|
||||||
|
<glyph glyph-name="uniF436" unicode=""
|
||||||
|
d="M512 1408v128h128v-128h-128zM768 1408v128h128v-128h-128zM1024 1408v128h128v-128h-128zM1280 1536h128v-128h-128v128zM512 1152v128h128v-128h-128zM768 1152v128h128v-128h-128zM1024 1152v128h128v-128h-128zM1280 1152v128h128v-128h-128zM512 896v128h128v-128
|
||||||
|
h-128zM768 896v128h128v-128h-128zM1024 896v128h128v-128h-128zM1280 896v128h128v-128h-128zM512 640v128h128v-128h-128zM768 640v128h128v-128h-128zM1024 640v128h128v-128h-128zM1280 640v128h128v-128h-128z" />
|
||||||
|
<glyph glyph-name="uniF434" unicode=""
|
||||||
|
d="M1152 0l896 896v-896h-896z" />
|
||||||
|
<glyph glyph-name="uniF303" unicode=""
|
||||||
|
d="M960 1792c388.736 0 704 -315.136 704 -704c0 -388.736 -315.264 -704 -704 -704c-388.864 0 -704 315.264 -704 704c0 388.864 315.136 704 704 704zM960 512c317.952 0 576 257.92 576 576s-258.048 576 -576 576c-318.08 0 -576 -257.92 -576 -576
|
||||||
|
s257.92 -576 576 -576zM1024 1536v-421.504l297.984 -297.984l-90.4961 -90.4961l-335.488 335.488v474.496h128z" />
|
||||||
|
<glyph glyph-name="uniF464" unicode=""
|
||||||
|
d="M1536 1408l-768 -384l-768 384v128h1536v-128zM0 1216l768 -384l256 128v-448h-1024v704zM1920 1152c70.7842 0 128 -57.3438 128 -128v-640c0 -70.7842 -57.2158 -128 -128 -128h-640c-70.7842 0 -128 57.2158 -128 128v640c0 70.6562 57.2158 128 128 128h640z
|
||||||
|
M1920 640v128h-640v-128h640z" />
|
||||||
|
<glyph glyph-name="uniF109" unicode=""
|
||||||
|
d="M256 1280h384l384 384v-1280l-384 384h-384v512zM1295.49 1295.62c69.5039 -69.5039 112.512 -165.504 112.512 -271.616s-43.0078 -202.112 -112.512 -271.488l-90.4961 90.4961c46.3359 46.208 75.0078 110.208 75.0078 180.992
|
||||||
|
c0 70.6562 -28.6719 134.656 -75.0078 181.12zM1476.61 1476.61c115.712 -115.841 187.392 -275.841 187.392 -452.608c0 -176.896 -71.6797 -336.896 -187.392 -452.608l-90.4961 90.4961c92.6719 92.6719 149.888 220.672 149.888 362.112
|
||||||
|
c0 141.312 -57.2158 269.44 -149.888 361.984z" />
|
||||||
|
<glyph glyph-name="uniF428" unicode=""
|
||||||
|
d="M1024 1280c141.312 0 256 -114.688 256 -256s-114.688 -256 -256 -256s-256 114.688 -256 256s114.688 256 256 256z" />
|
||||||
|
</font>
|
||||||
|
</defs></svg>
|
After Width: | Height: | Size: 77 KiB |
BIN
public/fonts/Genericons/Genericons.ttf
Normal file
BIN
public/fonts/Genericons/Genericons.woff
Normal file
719
public/fonts/Genericons/example.html
Normal file
@ -0,0 +1,719 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Genericons</title>
|
||||||
|
<link rel="stylesheet" href="genericons.css">
|
||||||
|
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
|
||||||
|
<style type="text/css">
|
||||||
|
/**
|
||||||
|
* Example page CSS
|
||||||
|
*/
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: sans-serif;
|
||||||
|
line-height: 1.5;
|
||||||
|
margin: 0;
|
||||||
|
color: #2f2d2c;
|
||||||
|
background: #fff;
|
||||||
|
font-size: 11pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #2f2d2c;
|
||||||
|
}
|
||||||
|
|
||||||
|
h4 {
|
||||||
|
margin-top: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#iconlist {
|
||||||
|
clear: both;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#iconlist div {
|
||||||
|
padding: 10px;
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
font-size: 32px;
|
||||||
|
line-height: 1;
|
||||||
|
position: relative;
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#iconlist div:before {
|
||||||
|
margin-right: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#iconlist div:hover {
|
||||||
|
cursor: pointer;
|
||||||
|
color: #e4c05c;
|
||||||
|
}
|
||||||
|
|
||||||
|
#primary {
|
||||||
|
background: #e4c05c;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
#content {
|
||||||
|
position: relative;
|
||||||
|
color: #fff;
|
||||||
|
max-width: 980px;
|
||||||
|
padding: 0 10px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#icons {
|
||||||
|
background: #fbfbfb;
|
||||||
|
}
|
||||||
|
|
||||||
|
#icons #iconlist {
|
||||||
|
max-width: 980px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
-moz-box-sizing:border-box;
|
||||||
|
-webkit-box-sizing:border-box;
|
||||||
|
padding: 20px 0;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
#glyph {
|
||||||
|
float: left;
|
||||||
|
width: 50%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
-moz-box-sizing:border-box;
|
||||||
|
-webkit-box-sizing:border-box;
|
||||||
|
-ms-box-sizing:border-box;
|
||||||
|
padding: 20px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#glyph .info {
|
||||||
|
float: right;
|
||||||
|
width: 180px;
|
||||||
|
padding: 36px 0 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#glyph .info a {
|
||||||
|
color: #2f2d2c;
|
||||||
|
display: block;
|
||||||
|
padding: 8px 0 8px 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#glyph .info strong {
|
||||||
|
font-weight: normal;
|
||||||
|
display: block;
|
||||||
|
padding: 8px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#glyph .genericon {
|
||||||
|
font-size: 256px;
|
||||||
|
width: 256px;
|
||||||
|
height: 256px;
|
||||||
|
overflow: visible;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.description {
|
||||||
|
margin-top: 50px;
|
||||||
|
width: 48%;
|
||||||
|
float: right;
|
||||||
|
padding-left: 40px;
|
||||||
|
margin-left: 2%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
-moz-box-sizing:border-box;
|
||||||
|
-webkit-box-sizing:border-box;
|
||||||
|
-ms-box-sizing:border-box;
|
||||||
|
background-size: 4px 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#primary h2 {
|
||||||
|
color: white;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 22px 0 0 20px;
|
||||||
|
max-width: 980px;
|
||||||
|
font-size: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
#primary h2 span {
|
||||||
|
display: block;
|
||||||
|
font-weight: normal;
|
||||||
|
font-size: 12pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
#footer {
|
||||||
|
clear: both;
|
||||||
|
max-width: 980px;
|
||||||
|
margin: 80px auto;
|
||||||
|
text-align: center;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: .1em;
|
||||||
|
font-size: 7pt;
|
||||||
|
color: #ddd;
|
||||||
|
}
|
||||||
|
|
||||||
|
#footer a {
|
||||||
|
color: #ccc;
|
||||||
|
display: inline-block;
|
||||||
|
width: 150px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-indent: 100%;
|
||||||
|
position: relative;
|
||||||
|
top: 2px;
|
||||||
|
opacity: .3;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: center top;
|
||||||
|
background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNi4wLjQsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB3aWR0aD0iMTUwcHgiIGhlaWdodD0iMTRweCIgdmlld0JveD0iMTAgMCAxNTAgMTQiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMTAgMCAxNTAgMTQiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggZmlsbD0iIzQ0NDQ0NCIgZD0iTTY1LjQzOCwxMi41Yy0zLjYyNiwwLTUuOTc2LTIuNjEyLTUuOTc2LTUuMzMxVjYuODMxYzAtMi43NjUsMi4zNTEtNS4zMyw1Ljk3Ni01LjMzDQoJCWMzLjY0MSwwLDUuOTksMi41NjUsNS45OSw1LjMzdjAuMzM5QzcxLjQyOCw5Ljg4OCw2OS4wNzksMTIuNSw2NS40MzgsMTIuNXogTTY5LjQ5Miw2Ljg2MWMwLTEuOTgtMS40NDQtMy43NDgtNC4wNTUtMy43NDgNCgkJcy00LjA0LDEuNzY4LTQuMDQsMy43NDh2MC4yNDZjMCwxLjk4MSwxLjQyOSwzLjc3OSw0LjA0LDMuNzc5czQuMDU1LTEuNzk4LDQuMDU1LTMuNzc5VjYuODYxeiIvPg0KCTxwYXRoIGZpbGw9IiM0NDQ0NDQiIGQ9Ik0yNC40OTgsMTIuMWwtMS4zNTItMi41MzVoLTYuMDA3TDE1LjgzNCwxMi4xaC0yLjAyOGw1LjUzMS0xMC4yM2gxLjU5N2w1LjYyMiwxMC4yM0gyNC40OThMMjQuNDk4LDEyLjF6DQoJCSBNMjAuMDksMy44NjZsLTIuMjI4LDQuMzAxaDQuNTMxTDIwLjA5LDMuODY2eiIvPg0KCTxwYXRoIGZpbGw9IiM0NDQ0NDQiIGQ9Ik0zNS4yODEsMTIuNWMtMy42NzEsMC01LjM3Ni0xLjk5Ni01LjM3Ni00LjY1NFYxLjg3aDEuOTA0djYuMDA2YzAsMS44OTEsMS4yNDUsMy4wMTMsMy42MSwzLjAxMw0KCQljMi40MjgsMCwzLjQyNi0xLjEyMiwzLjQyNi0zLjAxM1YxLjg3aDEuOTJ2NS45NzZDNDAuNzY3LDEwLjM4LDM5LjEzOCwxMi41LDM1LjI4MSwxMi41eiIvPg0KCTxwYXRoIGZpbGw9IiM0NDQ0NDQiIGQ9Ik01MS40NTgsMy40NjdWMTIuMWgtMS45MTlWMy40NjdoLTQuNDcxVjEuODdoMTAuODZ2MS41OThMNTEuNDU4LDMuNDY3TDUxLjQ1OCwzLjQ2N3oiLz4NCgk8cGF0aCBmaWxsPSIjNDQ0NDQ0IiBkPSJNODguNTQzLDEyLjFWNC4wMDRsLTAuNTA5LDAuODkxTDgzLjc0OSwxMi4xaC0wLjkzN2wtNC4yNC03LjIwNWwtMC41MDYtMC44OTFWMTIuMWgtMS44NzVWMS44N2gyLjY1OA0KCQlsNC4wNCw3LjAyMWwwLjQ3NiwwLjg2bDAuNDc3LTAuODZsMy45OTQtNy4wMjFoMi42MjdWMTIuMUg4OC41NDNMODguNTQzLDEyLjF6Ii8+DQoJPHBhdGggZmlsbD0iIzQ0NDQ0NCIgZD0iTTEwNC45NzgsMTIuMWwtMS4zNTItMi41MzVoLTYuMDA4TDk2LjMxMywxMi4xaC0yLjAyOGw1LjUzMS0xMC4yMzFoMS41OTlsNS42MjIsMTAuMjMxSDEwNC45Nzh6DQoJCSBNMTAwLjU3LDMuODY2bC0yLjIyOCw0LjMwMWg0LjUyOUwxMDAuNTcsMy44NjZ6Ii8+DQoJPHBhdGggZmlsbD0iIzQ0NDQ0NCIgZD0iTTExNC43NzgsMy40NjdWMTIuMWgtMS45MlYzLjQ2N2gtNC40N1YxLjg3aDEwLjg2djEuNTk4TDExNC43NzgsMy40NjdMMTE0Ljc3OCwzLjQ2N3oiLz4NCgk8cGF0aCBmaWxsPSIjNDQ0NDQ0IiBkPSJNMTI4Ljg2NiwzLjQ2N1YxMi4xaC0xLjkxOVYzLjQ2N2gtNC40NzJWMS44N2gxMC44NnYxLjU5OEwxMjguODY2LDMuNDY3TDEyOC44NjYsMy40Njd6Ii8+DQoJPHBhdGggZmlsbD0iIzQ0NDQ0NCIgZD0iTTEzOC4wNjcsMTIuMVYyLjgzN2MwLjc2OSwwLDEuMDc2LTAuNDE1LDEuMDc2LTAuOTY4aDAuODE0VjEyLjFIMTM4LjA2N0wxMzguMDY3LDEyLjF6Ii8+DQoJPHBhdGggZmlsbD0iIzQ0NDQ0NCIgZD0iTTE1NC45OTYsNC43NTdjLTAuOTIxLTAuODQ1LTIuMjc0LTEuNjQ0LTQuMTAyLTEuNjQ0Yy0yLjczMywwLTQuMjcsMS44NzUtNC4yNywzLjgyNXYwLjINCgkJYzAsMS45MzcsMS41NTEsMy43NDgsNC40MDgsMy43NDhjMS43MDUsMCwzLjExOC0wLjgxNCw0LjAwOS0xLjY0NGwxLjE1MiwxLjIxNWMtMS4xMjEsMS4xMDctMy4wMjYsMi4wNDMtNS4yODUsMi4wNDMNCgkJYy0zLjg3LDAtNi4yMjMtMi41MjEtNi4yMjMtNS4yODRWNi44NzdjMC0yLjc2NiwyLjU2Ni01LjM3Nyw2LjMxNC01LjM3N2MyLjE2NywwLDQuMTM2LDAuOTA2LDUuMTk0LDIuMDQzTDE1NC45OTYsNC43NTd6Ii8+DQoJPHBhdGggZmlsbD0iIzQ0NDQ0NCIgZD0iTTY2LjcwMiw1LjA2YzAuMzQ3LDAuMjI0LDAuNDQ0LDAuNjg3LDAuMjE5LDEuMDM3TDY1LjE2OSw4LjgxYy0wLjIyNSwwLjM0Ny0wLjY4OCwwLjQ0OC0xLjAzMywwLjIyOWwwLDANCgkJQzYzLjc5LDguODEyLDYzLjY5Miw4LjM1MSw2My45MTcsOGwxLjc1MS0yLjcxM0M2NS44OTMsNC45MzgsNjYuMzU1LDQuODM3LDY2LjcwMiw1LjA2TDY2LjcwMiw1LjA2eiIvPg0KPC9nPg0KPC9zdmc+DQo=');
|
||||||
|
}
|
||||||
|
|
||||||
|
#footer a:hover {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre, code {
|
||||||
|
font: 14px/1.5 monospace;
|
||||||
|
}
|
||||||
|
|
||||||
|
.code {
|
||||||
|
display: block;
|
||||||
|
font: 14px/1.5 monospace;
|
||||||
|
width: 600px;
|
||||||
|
white-space: pre;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
padding: 10px;
|
||||||
|
overflow: auto;
|
||||||
|
min-height: 110px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#iconlist .new, #iconlist .update {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
#iconlist .new:after, #iconlist .update:after {
|
||||||
|
color: #e4c05c;
|
||||||
|
display: block;
|
||||||
|
content: "NEW";
|
||||||
|
font: bold 8px/1 sans-serif;
|
||||||
|
position: absolute;
|
||||||
|
top: 0px;
|
||||||
|
text-align: center;
|
||||||
|
z-index: 10;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#iconlist .update:after {
|
||||||
|
content: "UPDATE";
|
||||||
|
left: -1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.searching #iconlist span.update:after, body.searching #iconlist span.new:after {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
#search {
|
||||||
|
border: 0;
|
||||||
|
border-radius: 2px;
|
||||||
|
position: absolute;
|
||||||
|
right: 20px;
|
||||||
|
font: 11pt sans-serif;
|
||||||
|
padding: 10px;
|
||||||
|
top: 20px;
|
||||||
|
background: rgba(255,255,255,.8);
|
||||||
|
}
|
||||||
|
|
||||||
|
#search:focus {
|
||||||
|
background: #fff;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.genericon-404 {
|
||||||
|
display: none !important; /* This is an easter egg */
|
||||||
|
}
|
||||||
|
|
||||||
|
.genericon:after {
|
||||||
|
content: attr(alt);
|
||||||
|
display: block;
|
||||||
|
font-size: 9px;
|
||||||
|
color: #999;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hideUACs.genericon:after {
|
||||||
|
content: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@media only screen and ( max-width: 900px ) {
|
||||||
|
|
||||||
|
#glyph {
|
||||||
|
float: none;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#glyph .info {
|
||||||
|
width: 30%;
|
||||||
|
}
|
||||||
|
#glyph .genericon {
|
||||||
|
width: 70%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.description {
|
||||||
|
clear: both;
|
||||||
|
width: 100%;
|
||||||
|
background: none;
|
||||||
|
padding-left: 0;
|
||||||
|
float: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script type="text/javascript">
|
||||||
|
/**
|
||||||
|
* Example page JS
|
||||||
|
*/
|
||||||
|
|
||||||
|
function copyToClipboard ( text, copyMode ) {
|
||||||
|
if ( copyMode == "css" ) {
|
||||||
|
window.prompt( "Copy this, then paste in your CSS :before selector.", text );
|
||||||
|
} else if ( copyMode == "html" ) {
|
||||||
|
window.prompt( "Copy this, then paste in your HTML.", text );
|
||||||
|
} else {
|
||||||
|
window.prompt( "Copy this, then paste in your Photoshop textfield.", text );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function pickRandomIcon() {
|
||||||
|
var divs = jQuery("#iconlist div").get().sort(function(){
|
||||||
|
return Math.round(Math.random())-0.5;
|
||||||
|
}).slice(0,1);
|
||||||
|
|
||||||
|
attr = jQuery(divs).attr('alt');
|
||||||
|
cssclass = jQuery(divs).attr('class');
|
||||||
|
displayGlyph( attr, cssclass );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function displayGlyph( attr, cssclass ) {
|
||||||
|
|
||||||
|
// set permalink
|
||||||
|
var permalink = cssclass.split(' genericon-')[1];
|
||||||
|
window.location.hash = permalink;
|
||||||
|
|
||||||
|
// css copy string
|
||||||
|
csstext = "content: \'\\" + attr + "';";
|
||||||
|
|
||||||
|
// html copy string
|
||||||
|
htmltext = '<span class="' + cssclass + '"></span>';
|
||||||
|
|
||||||
|
// glyph copy string
|
||||||
|
glyphtemp = "&#x" + attr + ";";
|
||||||
|
jQuery('#temp').html( glyphtemp );
|
||||||
|
glyphtext = jQuery('#temp').text();
|
||||||
|
|
||||||
|
// final output
|
||||||
|
output = '<div class="' + cssclass + '"></div>'
|
||||||
|
+ '<div class="info">'
|
||||||
|
+ '<strong>← ' + cssclass.split( ' ' )[1] + '</strong>'
|
||||||
|
+ '<a href="javascript:copyToClipboard(csstext, \'css\')">Copy CSS</a>'
|
||||||
|
+ '<a href="javascript:copyToClipboard(htmltext, \'html\')">Copy HTML</a>'
|
||||||
|
+ '<a href="javascript:copyToClipboard(glyphtext)">Copy Glyph</a>'
|
||||||
|
+ '</div>';
|
||||||
|
|
||||||
|
jQuery( '#glyph' ).html( output );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function sortUnicode ( a, b ) {
|
||||||
|
var numberA = jQuery(a).attr('alt').replace('f', '');
|
||||||
|
var numberB = jQuery(b).attr('alt').replace('f', '');
|
||||||
|
var contentA =parseInt( numberA, 16 );
|
||||||
|
var contentB =parseInt( numberB, 16 );
|
||||||
|
return (contentA < contentB) ? -1 : (contentA > contentB) ? 1 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
jQuery(document).ready(function() {
|
||||||
|
|
||||||
|
// pick random icon if no permalink, otherwise go to permalink
|
||||||
|
if ( window.location.hash ) {
|
||||||
|
permalink = "genericon-" + window.location.hash.split('#')[1];
|
||||||
|
attr = jQuery( '.' + permalink ).attr( 'alt' );
|
||||||
|
cssclass = jQuery( '.' + permalink ).attr('class');
|
||||||
|
displayGlyph( attr, cssclass );
|
||||||
|
} else {
|
||||||
|
pickRandomIcon();
|
||||||
|
}
|
||||||
|
|
||||||
|
jQuery( '#iconlist div' ).click(function() {
|
||||||
|
|
||||||
|
attr = jQuery( this ).attr( 'alt' );
|
||||||
|
cssclass = jQuery( this ).attr( 'class' );
|
||||||
|
|
||||||
|
displayGlyph( attr, cssclass );
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
var $rows = jQuery('#iconlist div');
|
||||||
|
jQuery('#search').keyup(function() {
|
||||||
|
|
||||||
|
// remove update text when using search
|
||||||
|
jQuery('body').addClass('searching');
|
||||||
|
|
||||||
|
var val = jQuery.trim(jQuery(this).val()).replace(/ +/g, ' ').toLowerCase();
|
||||||
|
|
||||||
|
$rows.show().filter(function() {
|
||||||
|
var text = jQuery(this).text().replace(/\s+/g, ' ').toLowerCase();
|
||||||
|
return !~text.indexOf(val);
|
||||||
|
}).hide();
|
||||||
|
});
|
||||||
|
|
||||||
|
jQuery('input#search').focus();
|
||||||
|
|
||||||
|
// sort based on number
|
||||||
|
jQuery('#iconlist div').sort( sortUnicode ).appendTo('#iconlist');
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
function toggleUACs() {
|
||||||
|
jQuery('.genericon').toggleClass('hideUACs');
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div id="main">
|
||||||
|
|
||||||
|
<div id="primary">
|
||||||
|
<div id="content">
|
||||||
|
|
||||||
|
<h2>Genericons <span>— A free, GPL, flexible icon font for blogs!</span></h2>
|
||||||
|
|
||||||
|
<input placeholder="Filter..." name="search" id="search" type="text" value="" maxlength="150" />
|
||||||
|
|
||||||
|
<div id="glyph">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="description">
|
||||||
|
<p>Genericons are vector icons embedded in a webfont designed to be clean and simple keeping with a generic aesthetic. Use for instant HiDPI or to easily change colors on the fly.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="icons">
|
||||||
|
<div id="iconlist">
|
||||||
|
|
||||||
|
<!-- note, the text inside the HTML elements is purely for the seach -->
|
||||||
|
|
||||||
|
<div alt="f423" class="genericon genericon-404" title="genericon-404">404</div>
|
||||||
|
|
||||||
|
<div alt="f508" class="genericon genericon-activity" title="genericon-activity">activity</div>
|
||||||
|
|
||||||
|
<div alt="f509" class="genericon genericon-anchor" title="genericon-anchor">anchor</div>
|
||||||
|
|
||||||
|
<div alt="f101" class="genericon genericon-aside" title="genericon-aside">aside</div>
|
||||||
|
|
||||||
|
<div alt="f416" class="genericon genericon-attachment" title="genericon-attachment">attachment</div>
|
||||||
|
|
||||||
|
<div alt="f109" class="genericon genericon-audio" title="genericon-audio">audio</div>
|
||||||
|
|
||||||
|
<div alt="f471" class="genericon genericon-bold" title="genericon-bold">bold</div>
|
||||||
|
|
||||||
|
<div alt="f444" class="genericon genericon-book" title="genericon-book">book</div>
|
||||||
|
|
||||||
|
<div alt="f50a" class="genericon genericon-bug" title="genericon-bug">bug</div>
|
||||||
|
|
||||||
|
<div alt="f447" class="genericon genericon-cart" title="genericon-cart">cart</div>
|
||||||
|
|
||||||
|
<div alt="f301" class="genericon genericon-category" title="genericon-category">category</div>
|
||||||
|
|
||||||
|
<div alt="f108" class="genericon genericon-chat" title="genericon-chat">chat</div>
|
||||||
|
|
||||||
|
<div alt="f418" class="genericon genericon-checkmark" title="genericon-checkmark">checkmark</div>
|
||||||
|
|
||||||
|
<div alt="f405" class="genericon genericon-close" title="genericon-close">close</div>
|
||||||
|
|
||||||
|
<div alt="f406" class="genericon genericon-close-alt" title="genericon-close-alt">close-alt</div>
|
||||||
|
|
||||||
|
<div alt="f426" class="genericon genericon-cloud" title="genericon-cloud">cloud</div>
|
||||||
|
|
||||||
|
<div alt="f440" class="genericon genericon-cloud-download" title="genericon-cloud-download">cloud-download</div>
|
||||||
|
|
||||||
|
<div alt="f441" class="genericon genericon-cloud-upload" title="genericon-cloud-upload">cloud-upload</div>
|
||||||
|
|
||||||
|
<div alt="f462" class="genericon genericon-code" title="genericon-code">code</div>
|
||||||
|
|
||||||
|
<div alt="f216" class="genericon genericon-codepen" title="genericon-codepen">codepen</div>
|
||||||
|
|
||||||
|
<div alt="f445" class="genericon genericon-cog" title="genericon-cog">cog</div>
|
||||||
|
|
||||||
|
<div alt="f432" class="genericon genericon-collapse" title="genericon-collapse">collapse</div>
|
||||||
|
|
||||||
|
<div alt="f300" class="genericon genericon-comment" title="genericon-comment">comment</div>
|
||||||
|
|
||||||
|
<div alt="f305" class="genericon genericon-day" title="genericon-day">day</div>
|
||||||
|
|
||||||
|
<div alt="f221" class="genericon genericon-digg" title="genericon-digg">digg</div>
|
||||||
|
|
||||||
|
<div alt="f443" class="genericon genericon-document" title="genericon-document">document</div>
|
||||||
|
|
||||||
|
<div alt="f428" class="genericon genericon-dot" title="genericon-dot">dot</div>
|
||||||
|
|
||||||
|
<div alt="f502" class="genericon genericon-downarrow" title="genericon-downarrow">downarrow</div>
|
||||||
|
|
||||||
|
<div alt="f50b" class="genericon genericon-download" title="genericon-download">download</div>
|
||||||
|
|
||||||
|
<div alt="f436" class="genericon genericon-draggable" title="genericon-draggable">draggable</div>
|
||||||
|
|
||||||
|
<div alt="f201" class="genericon genericon-dribbble" title="genericon-dribbble">dribbble</div>
|
||||||
|
|
||||||
|
<div alt="f225" class="genericon genericon-dropbox" title="genericon-dropbox">dropbox</div>
|
||||||
|
|
||||||
|
<div alt="f433" class="genericon genericon-dropdown" title="genericon-dropdown">dropdown</div>
|
||||||
|
|
||||||
|
<div alt="f434" class="genericon genericon-dropdown-left" title="genericon-dropdown-left">dropdown-left</div>
|
||||||
|
|
||||||
|
<div alt="f411" class="genericon genericon-edit" title="genericon-edit">edit</div>
|
||||||
|
|
||||||
|
<div alt="f476" class="genericon genericon-ellipsis" title="genericon-ellipsis">ellipsis</div>
|
||||||
|
|
||||||
|
<div alt="f431" class="genericon genericon-expand" title="genericon-expand">expand</div>
|
||||||
|
|
||||||
|
<div alt="f442" class="genericon genericon-external" title="genericon-external">external</div>
|
||||||
|
|
||||||
|
<div alt="f203" class="genericon genericon-facebook" title="genericon-facebook">facebook</div>
|
||||||
|
|
||||||
|
<div alt="f204" class="genericon genericon-facebook-alt" title="genericon-facebook-alt">facebook-alt</div>
|
||||||
|
|
||||||
|
<div alt="f458" class="genericon genericon-fastforward" title="genericon-fastforward">fastforward</div>
|
||||||
|
|
||||||
|
<div alt="f413" class="genericon genericon-feed" title="genericon-feed">feed</div>
|
||||||
|
|
||||||
|
<div alt="f468" class="genericon genericon-flag" title="genericon-flag">flag</div>
|
||||||
|
|
||||||
|
<div alt="f211" class="genericon genericon-flickr" title="genericon-flickr">flickr</div>
|
||||||
|
|
||||||
|
<div alt="f226" class="genericon genericon-foursquare" title="genericon-foursquare">foursquare</div>
|
||||||
|
|
||||||
|
<div alt="f474" class="genericon genericon-fullscreen" title="genericon-fullscreen">fullscreen</div>
|
||||||
|
|
||||||
|
<div alt="f103" class="genericon genericon-gallery" title="genericon-gallery">gallery</div>
|
||||||
|
|
||||||
|
<div alt="f200" class="genericon genericon-github" title="genericon-github">github</div>
|
||||||
|
|
||||||
|
<div alt="f206" class="genericon genericon-googleplus" title="genericon-googleplus">googleplus</div>
|
||||||
|
|
||||||
|
<div alt="f218" class="genericon genericon-googleplus-alt" title="genericon-googleplus-alt">googleplus-alt</div>
|
||||||
|
|
||||||
|
<div alt="f50c" class="genericon genericon-handset" title="genericon-handset">handset</div>
|
||||||
|
|
||||||
|
<div alt="f461" class="genericon genericon-heart" title="genericon-heart">heart</div>
|
||||||
|
|
||||||
|
<div alt="f457" class="genericon genericon-help" title="genericon-help">help</div>
|
||||||
|
|
||||||
|
<div alt="f404" class="genericon genericon-hide" title="genericon-hide">hide</div>
|
||||||
|
|
||||||
|
<div alt="f505" class="genericon genericon-hierarchy" title="genericon-hierarchy">hierarchy</div>
|
||||||
|
|
||||||
|
<div alt="f409" class="genericon genericon-home" title="genericon-home">home</div>
|
||||||
|
|
||||||
|
<div alt="f102" class="genericon genericon-image" title="genericon-image">image</div>
|
||||||
|
|
||||||
|
<div alt="f455" class="genericon genericon-info" title="genericon-info">info</div>
|
||||||
|
|
||||||
|
<div alt="f215" class="genericon genericon-instagram" title="genericon-instagram">instagram</div>
|
||||||
|
|
||||||
|
<div alt="f472" class="genericon genericon-italic" title="genericon-italic">italic</div>
|
||||||
|
|
||||||
|
<div alt="f427" class="genericon genericon-key" title="genericon-key">key</div>
|
||||||
|
|
||||||
|
<div alt="f503" class="genericon genericon-leftarrow" title="genericon-leftarrow">leftarrow</div>
|
||||||
|
|
||||||
|
<div alt="f107" class="genericon genericon-link" title="genericon-link">link</div>
|
||||||
|
|
||||||
|
<div alt="f207" class="genericon genericon-linkedin" title="genericon-linkedin">linkedin</div>
|
||||||
|
|
||||||
|
<div alt="f208" class="genericon genericon-linkedin-alt" title="genericon-linkedin-alt">linkedin-alt</div>
|
||||||
|
|
||||||
|
<div alt="f417" class="genericon genericon-location" title="genericon-location">location</div>
|
||||||
|
|
||||||
|
<div alt="f470" class="genericon genericon-lock" title="genericon-lock">lock</div>
|
||||||
|
|
||||||
|
<div alt="f410" class="genericon genericon-mail" title="genericon-mail">mail</div>
|
||||||
|
|
||||||
|
<div alt="f422" class="genericon genericon-maximize" title="genericon-maximize">maximize</div>
|
||||||
|
|
||||||
|
<div alt="f419" class="genericon genericon-menu" title="genericon-menu">menu</div>
|
||||||
|
|
||||||
|
<div alt="f50d" class="genericon genericon-microphone" title="genericon-microphone">microphone</div>
|
||||||
|
|
||||||
|
<div alt="f421" class="genericon genericon-minimize" title="genericon-minimize">minimize</div>
|
||||||
|
|
||||||
|
<div alt="f50e" class="genericon genericon-minus" title="genericon-minus">minus</div>
|
||||||
|
|
||||||
|
<div alt="f307" class="genericon genericon-month" title="genericon-month">month</div>
|
||||||
|
|
||||||
|
<div alt="f50f" class="genericon genericon-move" title="genericon-move">move</div>
|
||||||
|
|
||||||
|
<div alt="f429" class="genericon genericon-next" title="genericon-next">next</div>
|
||||||
|
|
||||||
|
<div alt="f456" class="genericon genericon-notice" title="genericon-notice">notice</div>
|
||||||
|
|
||||||
|
<div alt="f506" class="genericon genericon-paintbrush" title="genericon-paintbrush">paintbrush</div>
|
||||||
|
|
||||||
|
<div alt="f219" class="genericon genericon-path" title="genericon-path">path</div>
|
||||||
|
|
||||||
|
<div alt="f448" class="genericon genericon-pause" title="genericon-pause">pause</div>
|
||||||
|
|
||||||
|
<div alt="f437" class="genericon genericon-phone" title="genericon-phone">phone</div>
|
||||||
|
|
||||||
|
<div alt="f473" class="genericon genericon-picture" title="genericon-picture">picture</div>
|
||||||
|
|
||||||
|
<div alt="f308" class="genericon genericon-pinned" title="genericon-pinned">pinned</div>
|
||||||
|
|
||||||
|
<div alt="f209" class="genericon genericon-pinterest" title="genericon-pinterest">pinterest</div>
|
||||||
|
|
||||||
|
<div alt="f210" class="genericon genericon-pinterest-alt" title="genericon-pinterest-alt">pinterest-alt</div>
|
||||||
|
|
||||||
|
<div alt="f452" class="genericon genericon-play" title="genericon-play">play</div>
|
||||||
|
|
||||||
|
<div alt="f439" class="genericon genericon-plugin" title="genericon-plugin">plugin</div>
|
||||||
|
|
||||||
|
<div alt="f510" class="genericon genericon-plus" title="genericon-plus">plus</div>
|
||||||
|
|
||||||
|
<div alt="f224" class="genericon genericon-pocket" title="genericon-pocket">pocket</div>
|
||||||
|
|
||||||
|
<div alt="f217" class="genericon genericon-polldaddy" title="genericon-polldaddy">polldaddy</div>
|
||||||
|
|
||||||
|
<div alt="f460" class="genericon genericon-portfolio" title="genericon-portfolio">portfolio</div>
|
||||||
|
|
||||||
|
<div alt="f430" class="genericon genericon-previous" title="genericon-previous">previous</div>
|
||||||
|
|
||||||
|
<div alt="f469" class="genericon genericon-print" title="genericon-print">print</div>
|
||||||
|
|
||||||
|
<div alt="f106" class="genericon genericon-quote" title="genericon-quote">quote</div>
|
||||||
|
|
||||||
|
<div alt="f511" class="genericon genericon-rating-empty" title="genericon-rating-empty">rating-empty</div>
|
||||||
|
|
||||||
|
<div alt="f512" class="genericon genericon-rating-full" title="genericon-rating-full">rating-full</div>
|
||||||
|
|
||||||
|
<div alt="f513" class="genericon genericon-rating-half" title="genericon-rating-half">rating-half</div>
|
||||||
|
|
||||||
|
<div alt="f222" class="genericon genericon-reddit" title="genericon-reddit">reddit</div>
|
||||||
|
|
||||||
|
<div alt="f420" class="genericon genericon-refresh" title="genericon-refresh">refresh</div>
|
||||||
|
|
||||||
|
<div alt="f412" class="genericon genericon-reply" title="genericon-reply">reply</div>
|
||||||
|
|
||||||
|
<div alt="f466" class="genericon genericon-reply-alt" title="genericon-reply-alt">reply-alt</div>
|
||||||
|
|
||||||
|
<div alt="f467" class="genericon genericon-reply-single" title="genericon-reply-single">reply-single</div>
|
||||||
|
|
||||||
|
<div alt="f459" class="genericon genericon-rewind" title="genericon-rewind">rewind</div>
|
||||||
|
|
||||||
|
<div alt="f501" class="genericon genericon-rightarrow" title="genericon-rightarrow">rightarrow</div>
|
||||||
|
|
||||||
|
<div alt="f400" class="genericon genericon-search" title="genericon-search">search</div>
|
||||||
|
|
||||||
|
<div alt="f438" class="genericon genericon-send-to-phone" title="genericon-send-to-phone">send-to-phone</div>
|
||||||
|
|
||||||
|
<div alt="f454" class="genericon genericon-send-to-tablet" title="genericon-send-to-tablet">send-to-tablet</div>
|
||||||
|
|
||||||
|
<div alt="f415" class="genericon genericon-share" title="genericon-share">share</div>
|
||||||
|
|
||||||
|
<div alt="f403" class="genericon genericon-show" title="genericon-show">show</div>
|
||||||
|
|
||||||
|
<div alt="f514" class="genericon genericon-shuffle" title="genericon-shuffle">shuffle</div>
|
||||||
|
|
||||||
|
<div alt="f507" class="genericon genericon-sitemap" title="genericon-sitemap">sitemap</div>
|
||||||
|
|
||||||
|
<div alt="f451" class="genericon genericon-skip-ahead" title="genericon-skip-ahead">skip-ahead</div>
|
||||||
|
|
||||||
|
<div alt="f450" class="genericon genericon-skip-back" title="genericon-skip-back">skip-back</div>
|
||||||
|
|
||||||
|
<div alt="f220" class="genericon genericon-skype" title="genericon-skype">skype</div>
|
||||||
|
|
||||||
|
<div alt="f424" class="genericon genericon-spam" title="genericon-spam">spam</div>
|
||||||
|
|
||||||
|
<div alt="f515" class="genericon genericon-spotify" title="genericon-spotify">spotify</div>
|
||||||
|
|
||||||
|
<div alt="f100" class="genericon genericon-standard" title="genericon-standard">standard</div>
|
||||||
|
|
||||||
|
<div alt="f408" class="genericon genericon-star" title="genericon-star">star</div>
|
||||||
|
|
||||||
|
<div alt="f105" class="genericon genericon-status" title="genericon-status">status</div>
|
||||||
|
|
||||||
|
<div alt="f449" class="genericon genericon-stop" title="genericon-stop">stop</div>
|
||||||
|
|
||||||
|
<div alt="f223" class="genericon genericon-stumbleupon" title="genericon-stumbleupon">stumbleupon</div>
|
||||||
|
|
||||||
|
<div alt="f463" class="genericon genericon-subscribe" title="genericon-subscribe">subscribe</div>
|
||||||
|
|
||||||
|
<div alt="f465" class="genericon genericon-subscribed" title="genericon-subscribed">subscribed</div>
|
||||||
|
|
||||||
|
<div alt="f425" class="genericon genericon-summary" title="genericon-summary">summary</div>
|
||||||
|
|
||||||
|
<div alt="f453" class="genericon genericon-tablet" title="genericon-tablet">tablet</div>
|
||||||
|
|
||||||
|
<div alt="f302" class="genericon genericon-tag" title="genericon-tag">tag</div>
|
||||||
|
|
||||||
|
<div alt="f303" class="genericon genericon-time" title="genericon-time">time</div>
|
||||||
|
|
||||||
|
<div alt="f435" class="genericon genericon-top" title="genericon-top">top</div>
|
||||||
|
|
||||||
|
<div alt="f407" class="genericon genericon-trash" title="genericon-trash">trash</div>
|
||||||
|
|
||||||
|
<div alt="f214" class="genericon genericon-tumblr" title="genericon-tumblr">tumblr</div>
|
||||||
|
|
||||||
|
<div alt="f516" class="genericon genericon-twitch" title="genericon-twitch">twitch</div>
|
||||||
|
|
||||||
|
<div alt="f202" class="genericon genericon-twitter" title="genericon-twitter">twitter</div>
|
||||||
|
|
||||||
|
<div alt="f446" class="genericon genericon-unapprove" title="genericon-unapprove">unapprove</div>
|
||||||
|
|
||||||
|
<div alt="f464" class="genericon genericon-unsubscribe" title="genericon-unsubscribe">unsubscribe</div>
|
||||||
|
|
||||||
|
<div alt="f401" class="genericon genericon-unzoom" title="genericon-unzoom">unzoom</div>
|
||||||
|
|
||||||
|
<div alt="f500" class="genericon genericon-uparrow" title="genericon-uparrow">uparrow</div>
|
||||||
|
|
||||||
|
<div alt="f304" class="genericon genericon-user" title="genericon-user">user</div>
|
||||||
|
|
||||||
|
<div alt="f104" class="genericon genericon-video" title="genericon-video">video</div>
|
||||||
|
|
||||||
|
<div alt="f517" class="genericon genericon-videocamera" title="genericon-videocamera">videocamera</div>
|
||||||
|
|
||||||
|
<div alt="f212" class="genericon genericon-vimeo" title="genericon-vimeo">vimeo</div>
|
||||||
|
|
||||||
|
<div alt="f414" class="genericon genericon-warning" title="genericon-warning">warning</div>
|
||||||
|
|
||||||
|
<div alt="f475" class="genericon genericon-website" title="genericon-website">website</div>
|
||||||
|
|
||||||
|
<div alt="f306" class="genericon genericon-week" title="genericon-week">week</div>
|
||||||
|
|
||||||
|
<div alt="f205" class="genericon genericon-wordpress" title="genericon-wordpress">wordpress</div>
|
||||||
|
|
||||||
|
<div alt="f504" class="genericon genericon-xpost" title="genericon-xpost">xpost</div>
|
||||||
|
|
||||||
|
<div alt="f213" class="genericon genericon-youtube" title="genericon-youtube">youtube</div>
|
||||||
|
|
||||||
|
<div alt="f402" class="genericon genericon-zoom" title="genericon-zoom">zoom</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="temp" style="display: none;"></div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="footer">
|
||||||
|
|
||||||
|
<p>An <a href="http://automattic.com" rel="nofollow">Automattic</a> Portrayal</p>
|
||||||
|
<p>No designers were harmed in the making of this icon font.</p>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
213
public/fonts/Genericons/genericons.css
Normal file
BIN
public/fonts/Inconsolata/Inconsolata-Regular.ttf
Normal file
92
public/fonts/Inconsolata/OFL.txt
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
Copyright 2006 The Inconsolata Project Authors
|
||||||
|
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||||
|
This license is copied below, and is also available with a FAQ at:
|
||||||
|
http://scripts.sil.org/OFL
|
||||||
|
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
PREAMBLE
|
||||||
|
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||||
|
development of collaborative font projects, to support the font creation
|
||||||
|
efforts of academic and linguistic communities, and to provide a free and
|
||||||
|
open framework in which fonts may be shared and improved in partnership
|
||||||
|
with others.
|
||||||
|
|
||||||
|
The OFL allows the licensed fonts to be used, studied, modified and
|
||||||
|
redistributed freely as long as they are not sold by themselves. The
|
||||||
|
fonts, including any derivative works, can be bundled, embedded,
|
||||||
|
redistributed and/or sold with any software provided that any reserved
|
||||||
|
names are not used by derivative works. The fonts and derivatives,
|
||||||
|
however, cannot be released under any other type of license. The
|
||||||
|
requirement for fonts to remain under this license does not apply
|
||||||
|
to any document created using the fonts or their derivatives.
|
||||||
|
|
||||||
|
DEFINITIONS
|
||||||
|
"Font Software" refers to the set of files released by the Copyright
|
||||||
|
Holder(s) under this license and clearly marked as such. This may
|
||||||
|
include source files, build scripts and documentation.
|
||||||
|
|
||||||
|
"Reserved Font Name" refers to any names specified as such after the
|
||||||
|
copyright statement(s).
|
||||||
|
|
||||||
|
"Original Version" refers to the collection of Font Software components as
|
||||||
|
distributed by the Copyright Holder(s).
|
||||||
|
|
||||||
|
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||||
|
or substituting -- in part or in whole -- any of the components of the
|
||||||
|
Original Version, by changing formats or by porting the Font Software to a
|
||||||
|
new environment.
|
||||||
|
|
||||||
|
"Author" refers to any designer, engineer, programmer, technical
|
||||||
|
writer or other person who contributed to the Font Software.
|
||||||
|
|
||||||
|
PERMISSION & CONDITIONS
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||||
|
redistribute, and sell modified and unmodified copies of the Font
|
||||||
|
Software, subject to the following conditions:
|
||||||
|
|
||||||
|
1) Neither the Font Software nor any of its individual components,
|
||||||
|
in Original or Modified Versions, may be sold by itself.
|
||||||
|
|
||||||
|
2) Original or Modified Versions of the Font Software may be bundled,
|
||||||
|
redistributed and/or sold with any software, provided that each copy
|
||||||
|
contains the above copyright notice and this license. These can be
|
||||||
|
included either as stand-alone text files, human-readable headers or
|
||||||
|
in the appropriate machine-readable metadata fields within text or
|
||||||
|
binary files as long as those fields can be easily viewed by the user.
|
||||||
|
|
||||||
|
3) No Modified Version of the Font Software may use the Reserved Font
|
||||||
|
Name(s) unless explicit written permission is granted by the corresponding
|
||||||
|
Copyright Holder. This restriction only applies to the primary font name as
|
||||||
|
presented to the users.
|
||||||
|
|
||||||
|
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||||
|
Software shall not be used to promote, endorse or advertise any
|
||||||
|
Modified Version, except to acknowledge the contribution(s) of the
|
||||||
|
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||||
|
permission.
|
||||||
|
|
||||||
|
5) The Font Software, modified or unmodified, in part or in whole,
|
||||||
|
must be distributed entirely under this license, and must not be
|
||||||
|
distributed under any other license. The requirement for fonts to
|
||||||
|
remain under this license does not apply to any document created
|
||||||
|
using the Font Software.
|
||||||
|
|
||||||
|
TERMINATION
|
||||||
|
This license becomes null and void if any of the above conditions are
|
||||||
|
not met.
|
||||||
|
|
||||||
|
DISCLAIMER
|
||||||
|
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||||
|
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||||
|
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||||
|
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||||
|
OTHER DEALINGS IN THE FONT SOFTWARE.
|
BIN
public/fonts/Merriweather/Merriweather-Bold.ttf
Normal file
BIN
public/fonts/Merriweather/Merriweather-BoldItalic.ttf
Normal file
BIN
public/fonts/Merriweather/Merriweather-Light.ttf
Normal file
BIN
public/fonts/Merriweather/Merriweather-LightItalic.ttf
Normal file
92
public/fonts/Merriweather/OFL.txt
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
Copyright (c) 2010-2016, Sorkin Type Co (www.sorkintype.com) with Reserved Font Name 'Merriweather'. Merriweather is a trademark of Sorkin Type Co.
|
||||||
|
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||||
|
This license is copied below, and is also available with a FAQ at:
|
||||||
|
http://scripts.sil.org/OFL
|
||||||
|
|
||||||
|
|
||||||
|
-----------------------------------------------------------
|
||||||
|
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
PREAMBLE
|
||||||
|
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||||
|
development of collaborative font projects, to support the font creation
|
||||||
|
efforts of academic and linguistic communities, and to provide a free and
|
||||||
|
open framework in which fonts may be shared and improved in partnership
|
||||||
|
with others.
|
||||||
|
|
||||||
|
The OFL allows the licensed fonts to be used, studied, modified and
|
||||||
|
redistributed freely as long as they are not sold by themselves. The
|
||||||
|
fonts, including any derivative works, can be bundled, embedded,
|
||||||
|
redistributed and/or sold with any software provided that any reserved
|
||||||
|
names are not used by derivative works. The fonts and derivatives,
|
||||||
|
however, cannot be released under any other type of license. The
|
||||||
|
requirement for fonts to remain under this license does not apply
|
||||||
|
to any document created using the fonts or their derivatives.
|
||||||
|
|
||||||
|
DEFINITIONS
|
||||||
|
"Font Software" refers to the set of files released by the Copyright
|
||||||
|
Holder(s) under this license and clearly marked as such. This may
|
||||||
|
include source files, build scripts and documentation.
|
||||||
|
|
||||||
|
"Reserved Font Name" refers to any names specified as such after the
|
||||||
|
copyright statement(s).
|
||||||
|
|
||||||
|
"Original Version" refers to the collection of Font Software components as
|
||||||
|
distributed by the Copyright Holder(s).
|
||||||
|
|
||||||
|
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||||
|
or substituting -- in part or in whole -- any of the components of the
|
||||||
|
Original Version, by changing formats or by porting the Font Software to a
|
||||||
|
new environment.
|
||||||
|
|
||||||
|
"Author" refers to any designer, engineer, programmer, technical
|
||||||
|
writer or other person who contributed to the Font Software.
|
||||||
|
|
||||||
|
PERMISSION & CONDITIONS
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining
|
||||||
|
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||||
|
redistribute, and sell modified and unmodified copies of the Font
|
||||||
|
Software, subject to the following conditions:
|
||||||
|
|
||||||
|
1) Neither the Font Software nor any of its individual components,
|
||||||
|
in Original or Modified Versions, may be sold by itself.
|
||||||
|
|
||||||
|
2) Original or Modified Versions of the Font Software may be bundled,
|
||||||
|
redistributed and/or sold with any software, provided that each copy
|
||||||
|
contains the above copyright notice and this license. These can be
|
||||||
|
included either as stand-alone text files, human-readable headers or
|
||||||
|
in the appropriate machine-readable metadata fields within text or
|
||||||
|
binary files as long as those fields can be easily viewed by the user.
|
||||||
|
|
||||||
|
3) No Modified Version of the Font Software may use the Reserved Font
|
||||||
|
Name(s) unless explicit written permission is granted by the corresponding
|
||||||
|
Copyright Holder. This restriction only applies to the primary font name as
|
||||||
|
presented to the users.
|
||||||
|
|
||||||
|
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||||
|
Software shall not be used to promote, endorse or advertise any
|
||||||
|
Modified Version, except to acknowledge the contribution(s) of the
|
||||||
|
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||||
|
permission.
|
||||||
|
|
||||||
|
5) The Font Software, modified or unmodified, in part or in whole,
|
||||||
|
must be distributed entirely under this license, and must not be
|
||||||
|
distributed under any other license. The requirement for fonts to
|
||||||
|
remain under this license does not apply to any document created
|
||||||
|
using the Font Software.
|
||||||
|
|
||||||
|
TERMINATION
|
||||||
|
This license becomes null and void if any of the above conditions are
|
||||||
|
not met.
|
||||||
|
|
||||||
|
DISCLAIMER
|
||||||
|
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||||
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||||
|
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||||
|
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||||
|
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||||
|
OTHER DEALINGS IN THE FONT SOFTWARE.
|
202
public/fonts/Open_Sans/LICENSE.txt
Normal file
@ -0,0 +1,202 @@
|
|||||||
|
|
||||||
|
Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
|
other entities that control, are controlled by, or are under common
|
||||||
|
control with that entity. For the purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such entity, whether by contract or
|
||||||
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
|
including but not limited to software source code, documentation
|
||||||
|
source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical
|
||||||
|
transformation or translation of a Source form, including but
|
||||||
|
not limited to compiled object code, generated documentation,
|
||||||
|
and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
|
Object form, made available under the License, as indicated by a
|
||||||
|
copyright notice that is included in or attached to the work
|
||||||
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
|
form, that is based on (or derived from) the Work and for which the
|
||||||
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
|
of this License, Derivative Works shall not include works that remain
|
||||||
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including
|
||||||
|
the original version of the Work and any modifications or additions
|
||||||
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
|
means any form of electronic, verbal, or written communication sent
|
||||||
|
to the Licensor or its representatives, including but not limited to
|
||||||
|
communication on electronic mailing lists, source code control systems,
|
||||||
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
(except as stated in this section) patent license to make, have made,
|
||||||
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
|
where such license applies only to those patent claims licensable
|
||||||
|
by such Contributor that are necessarily infringed by their
|
||||||
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
|
institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
|
or contributory patent infringement, then any patent licenses
|
||||||
|
granted to You under this License for that Work shall terminate
|
||||||
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
|
modifications, and in Source or Object form, provided that You
|
||||||
|
meet the following conditions:
|
||||||
|
|
||||||
|
(a) You must give any other recipients of the Work or
|
||||||
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
(b) You must cause any modified files to carry prominent notices
|
||||||
|
stating that You changed the files; and
|
||||||
|
|
||||||
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
|
that You distribute, all copyright, patent, trademark, and
|
||||||
|
attribution notices from the Source form of the Work,
|
||||||
|
excluding those notices that do not pertain to any part of
|
||||||
|
the Derivative Works; and
|
||||||
|
|
||||||
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
|
distribution, then any Derivative Works that You distribute must
|
||||||
|
include a readable copy of the attribution notices contained
|
||||||
|
within such NOTICE file, excluding those notices that do not
|
||||||
|
pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed
|
||||||
|
as part of the Derivative Works; within the Source form or
|
||||||
|
documentation, if provided along with the Derivative Works; or,
|
||||||
|
within a display generated by the Derivative Works, if and
|
||||||
|
wherever such third-party notices normally appear. The contents
|
||||||
|
of the NOTICE file are for informational purposes only and
|
||||||
|
do not modify the License. You may add Your own attribution
|
||||||
|
notices within Derivative Works that You distribute, alongside
|
||||||
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
|
that such additional attribution notices cannot be construed
|
||||||
|
as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and
|
||||||
|
may provide additional or different license terms and conditions
|
||||||
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
|
the conditions stated in this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
|
this License, without any additional terms or conditions.
|
||||||
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
|
the terms of any separate license agreement you may have executed
|
||||||
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
|
except as required for reasonable and customary use in describing the
|
||||||
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
implied, including, without limitation, any warranties or conditions
|
||||||
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any
|
||||||
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
|
unless required by applicable law (such as deliberate and grossly
|
||||||
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
|
liable to You for damages, including any direct, indirect, special,
|
||||||
|
incidental, or consequential damages of any character arising as a
|
||||||
|
result of this License or out of the use or inability to use the
|
||||||
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses), even if such Contributor
|
||||||
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
|
or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only
|
||||||
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
|
defend, and hold each Contributor harmless for any liability
|
||||||
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
|
|
||||||
|
To apply the Apache License to your work, attach the following
|
||||||
|
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||||
|
replaced with your own identifying information. (Don't include
|
||||||
|
the brackets!) The text should be enclosed in the appropriate
|
||||||
|
comment syntax for the file format. We also recommend that a
|
||||||
|
file or class name and description of purpose be included on the
|
||||||
|
same "printed page" as the copyright notice for easier
|
||||||
|
identification within third-party archives.
|
||||||
|
|
||||||
|
Copyright [yyyy] [name of copyright owner]
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
BIN
public/fonts/Open_Sans/OpenSans-Bold.ttf
Normal file
BIN
public/fonts/Open_Sans/OpenSans-Regular.ttf
Normal file
BIN
public/images/author.jpg
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
public/images/cover.jpg
Normal file
After Width: | Height: | Size: 4.6 MiB |
BIN
public/images/logo.png
Normal file
After Width: | Height: | Size: 4.8 KiB |
BIN
public/images/mozilla_observatory.png
Normal file
After Width: | Height: | Size: 54 KiB |
BIN
public/images/tmux.png
Normal file
After Width: | Height: | Size: 187 KiB |
537
public/index.html
Normal file
@ -0,0 +1,537 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en-us">
|
||||||
|
<head>
|
||||||
|
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:card" content="summary"/>
|
||||||
|
|
||||||
|
<meta name="twitter:image" content="/images/cover.jpg"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:title" content="Sysadmining. All day. Every day."/>
|
||||||
|
<meta name="twitter:description" content="Yet Another Blog about Linux and Networking"/>
|
||||||
|
<meta name="twitter:site" content="@"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:title" content="Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:site_name" content="Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:url" content="https://www.captainark.net/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:image" content="/images/cover.jpg"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:type" content="website" />
|
||||||
|
<meta property="og:description" content="Yet Another Blog about Linux and Networking" />
|
||||||
|
|
||||||
|
|
||||||
|
<title>Sysadmining. All day. Every day.</title>
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="description" content="Yet Another Blog about Linux and Networking" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="HandheldFriendly" content="True" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="/images/favicon.ico">
|
||||||
|
<link rel="apple-touch-icon" href="/images/apple-touch-icon.png" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/screen.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/nav.css" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/solarized-light.min.css">
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js"></script>
|
||||||
|
|
||||||
|
<script>hljs.initHighlightingOnLoad();</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link href="https://www.captainark.net/index.xml" rel="alternate" type="application/rss+xml" title="Sysadmining. All day. Every day." />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="generator" content="Hugo 0.53" />
|
||||||
|
|
||||||
|
<link rel="canonical" href="https://www.captainark.net/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "Website",
|
||||||
|
"publisher": {
|
||||||
|
"@type": "Person",
|
||||||
|
"name": ,
|
||||||
|
|
||||||
|
"image": {
|
||||||
|
"@type": "ImageObject",
|
||||||
|
"url": https://www.captainark.net/images/author.jpg,
|
||||||
|
"width": 250,
|
||||||
|
"height": 250
|
||||||
|
},
|
||||||
|
|
||||||
|
"url": https://www.captainark.net,
|
||||||
|
"sameAs": [
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
],
|
||||||
|
"description": Geek | Gamer | TV Shows Aficionado
|
||||||
|
|
||||||
|
},
|
||||||
|
"url": https://www.captainark.net/,
|
||||||
|
"mainEntityOfPage": {
|
||||||
|
"@type": "WebPage",
|
||||||
|
"@id": https://www.captainark.net/
|
||||||
|
},
|
||||||
|
"description": Yet Another Blog about Linux and Networking
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
(function(f, a, t, h, o, m){
|
||||||
|
a[h]=a[h]||function(){
|
||||||
|
(a[h].q=a[h].q||[]).push(arguments)
|
||||||
|
};
|
||||||
|
o=f.createElement('script'),
|
||||||
|
m=f.getElementsByTagName('script')[0];
|
||||||
|
o.async=1; o.src=t; o.id='fathom-script';
|
||||||
|
m.parentNode.insertBefore(o,m)
|
||||||
|
})(document, window, '//stats.captainark.net/tracker.js', 'fathom');
|
||||||
|
fathom('set', 'siteId', 'GEWGL');
|
||||||
|
fathom('trackPageview');
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.1.5/css/fork-awesome.min.css" integrity="sha256-P64qV9gULPHiZTdrS1nM59toStkgjM0dsf5mK/UwBV4=" crossorigin="anonymous">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body class="nav-closed">
|
||||||
|
|
||||||
|
<div class="nav">
|
||||||
|
<h3 class="nav-title">Menu</h3>
|
||||||
|
<a href="#" class="nav-close">
|
||||||
|
<span class="hidden">Close</span>
|
||||||
|
</a>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h3>This site</h3>
|
||||||
|
<li class="nav-opened nav-current" role="presentation">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/about">About</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/resume">Resume</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<h3>Other services</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://git.captainark.net">Gitea</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://pics.captainark.net">Chevereto</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://paste.captainark.net">Privatebin</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://chat.captainark.net">Rocket.Chat</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="subscribe-button icon-feed" href="https://www.captainark.net/index.xml">Subscribe</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<span class="nav-cover"></span>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="site-wrapper">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<header class="main-header" style="background-image: url(/images/cover.jpg)">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="main-nav overlay clearfix">
|
||||||
|
|
||||||
|
<a class="blog-logo" href="https://www.captainark.net/"><img src="/images/logo.png" alt="Blog Logo" /></a>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="menu-button" href="#"><span class="burger">☰</span><span class="word">Menu</span></a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
<div class="vertical">
|
||||||
|
<div class="main-header-content inner">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h1 class="page-title">Sysadmining. All day. Every day.</h1>
|
||||||
|
<h2 class="page-description">Yet Another Blog about Linux and Networking</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<a class="scroll-down icon-arrow-left" href="#content"><span class="hidden">Scroll Down</span></a>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
<main id="content" class="content" role="main">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="extra-pagination inner">
|
||||||
|
<nav class="pagination" role="navigation">
|
||||||
|
|
||||||
|
<span class="page-number">Page 1 of 3</span>
|
||||||
|
|
||||||
|
<a class="older-posts" href="/page/2/">Older Posts →</a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post post">
|
||||||
|
<header class="post-header">
|
||||||
|
<h2 class="post-title"><a href="/2018/12/03/debian-repos-over-https/">Debian repos over HTTPS</a></h2>
|
||||||
|
</header>
|
||||||
|
<section class="post-excerpt">
|
||||||
|
|
||||||
|
<p>I’ve been using deb.debian.org as the main debian repo on my servers pretty much since it’s become available.
|
||||||
|
I’ve recently realized that the service is available over HTTPS, and since I’m all about encrypting all of the things, I figured I’d configure it on my servers. <a class="read-more" href="/2018/12/03/debian-repos-over-https/">»</a></p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
<footer class="post-meta">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<img class="author-thumb" src="/images/author.jpg" alt="Author image" nopin="nopin" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Antoine Joubert
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<time class="post-date" datetime="2018-12-03T00:00:00+01:00">
|
||||||
|
03 December 2018
|
||||||
|
</time>
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post post">
|
||||||
|
<header class="post-header">
|
||||||
|
<h2 class="post-title"><a href="/2018/11/27/self-hosted-report-uri/">Self-hosted report-uri</a></h2>
|
||||||
|
</header>
|
||||||
|
<section class="post-excerpt">
|
||||||
|
|
||||||
|
<p>I’ve been playing with the security headers for this website for the past few days, most notably with the Content-Security-Policy as well as the Expect-CT headers.
|
||||||
|
After having spent a few hours on this, I’m pretty happy with the results ! <a class="read-more" href="/2018/11/27/self-hosted-report-uri/">»</a></p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
<footer class="post-meta">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<img class="author-thumb" src="/images/author.jpg" alt="Author image" nopin="nopin" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Antoine Joubert
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<time class="post-date" datetime="2018-11-27T00:00:00+01:00">
|
||||||
|
27 November 2018
|
||||||
|
</time>
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post post">
|
||||||
|
<header class="post-header">
|
||||||
|
<h2 class="post-title"><a href="/2018/04/14/dns-zone-versioning/">DNS zone versioning</a></h2>
|
||||||
|
</header>
|
||||||
|
<section class="post-excerpt">
|
||||||
|
|
||||||
|
<p>I’ve been using PowerDNS with a SQL backend as a hidden master DNS server for a few years now.
|
||||||
|
I’ve been wanting to write a quick shell script to version my DNS zones for a while, and since I’ve finally taken the time to do so today, I figured I’d share it here. <a class="read-more" href="/2018/04/14/dns-zone-versioning/">»</a></p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
<footer class="post-meta">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<img class="author-thumb" src="/images/author.jpg" alt="Author image" nopin="nopin" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Antoine Joubert
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<time class="post-date" datetime="2018-04-14T00:00:00+01:00">
|
||||||
|
14 April 2018
|
||||||
|
</time>
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post post">
|
||||||
|
<header class="post-header">
|
||||||
|
<h2 class="post-title"><a href="/2016/03/26/webdav-with-nginx/">WebDAV with nginx</a></h2>
|
||||||
|
</header>
|
||||||
|
<section class="post-excerpt">
|
||||||
|
|
||||||
|
<p>This website has been hosted on an Online.net dedicated server since its creation. I’ve been one of their customers for the past 3 years now, and I still don’t have anything bad to say about them. <a class="read-more" href="/2016/03/26/webdav-with-nginx/">»</a></p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
<footer class="post-meta">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<img class="author-thumb" src="/images/author.jpg" alt="Author image" nopin="nopin" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Antoine Joubert
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<time class="post-date" datetime="2016-03-26T00:00:00+01:00">
|
||||||
|
26 March 2016
|
||||||
|
</time>
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post post">
|
||||||
|
<header class="post-header">
|
||||||
|
<h2 class="post-title"><a href="/2016/03/13/mysql-backup-script/">MySQL backup script</a></h2>
|
||||||
|
</header>
|
||||||
|
<section class="post-excerpt">
|
||||||
|
|
||||||
|
<p>I wrote a MySQL database backup script a while back. I known they are more than enough of them already floating around the internet, but hey, I figured I’d share it here anyway.
|
||||||
|
The script For the script to work, you’ll need to edit a few variable to match your configuration. <a class="read-more" href="/2016/03/13/mysql-backup-script/">»</a></p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
<footer class="post-meta">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<img class="author-thumb" src="/images/author.jpg" alt="Author image" nopin="nopin" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Antoine Joubert
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<time class="post-date" datetime="2016-03-13T00:00:00+01:00">
|
||||||
|
13 March 2016
|
||||||
|
</time>
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="pagination" role="navigation">
|
||||||
|
|
||||||
|
<span class="page-number">Page 1 of 3</span>
|
||||||
|
|
||||||
|
<a class="older-posts" href="/page/2/">Older Posts →</a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
|
||||||
|
<center>
|
||||||
|
<a class="fa-icons" href="mailto:contact@captainark.net">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-envelope fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://twitter.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://social.captainark.net/users/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-mastodon-alt fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://github.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.last.fm/user/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-lastfm fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://steamcommunity.com/id/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-steam fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.twitch.tv/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitch fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</center>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="site-footer clearfix">
|
||||||
|
<section class="copyright"><a href="">Sysadmining. All day. Every day.</a> © 2015 - 2019</section>
|
||||||
|
|
||||||
|
<section class="poweredby">Proudly generated by <a class="icon-hugo" href="http://gohugo.io">HUGO</a>, with <a class="icon-theme" href="https://github.com/vjeantet/hugo-theme-casper">Casper</a> theme</section>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript" src="/js/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/jquery.fitvids.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/index.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
141
public/index.xml
Normal file
@ -0,0 +1,141 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||||
|
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||||
|
<channel>
|
||||||
|
<title>Sysadmining. All day. Every day.</title>
|
||||||
|
<link>https://www.captainark.net/</link>
|
||||||
|
<description>Recent content on Sysadmining. All day. Every day.</description>
|
||||||
|
<generator>Hugo -- gohugo.io</generator>
|
||||||
|
<language>en-us</language>
|
||||||
|
<copyright>© 2015 - 2019</copyright>
|
||||||
|
<lastBuildDate>Sun, 06 Jan 2019 12:20:53 +0100</lastBuildDate>
|
||||||
|
|
||||||
|
<atom:link href="https://www.captainark.net/index.xml" rel="self" type="application/rss+xml" />
|
||||||
|
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Resume</title>
|
||||||
|
<link>https://www.captainark.net/resume/</link>
|
||||||
|
<pubDate>Sun, 06 Jan 2019 12:20:53 +0100</pubDate>
|
||||||
|
|
||||||
|
<guid>https://www.captainark.net/resume/</guid>
|
||||||
|
<description>Profile Hi ! I&rsquo;m Antoine. I&rsquo;m a 31 years old Systems and Network administrator, specialized in Linux and network management. I am not currently looking for a new opportunity.
|
||||||
|
If you find my profile interesting or if you have any questions, please send me an email !</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>About</title>
|
||||||
|
<link>https://www.captainark.net/about/</link>
|
||||||
|
<pubDate>Sun, 06 Jan 2019 12:20:50 +0100</pubDate>
|
||||||
|
|
||||||
|
<guid>https://www.captainark.net/about/</guid>
|
||||||
|
<description>My blog.</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Debian repos over HTTPS</title>
|
||||||
|
<link>https://www.captainark.net/2018/12/03/debian-repos-over-https/</link>
|
||||||
|
<pubDate>Mon, 03 Dec 2018 00:00:00 +0100</pubDate>
|
||||||
|
|
||||||
|
<guid>https://www.captainark.net/2018/12/03/debian-repos-over-https/</guid>
|
||||||
|
<description>I&rsquo;ve been using deb.debian.org as the main debian repo on my servers pretty much since it&rsquo;s become available.
|
||||||
|
I&rsquo;ve recently realized that the service is available over HTTPS, and since I&rsquo;m all about encrypting all of the things, I figured I&rsquo;d configure it on my servers.</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Self-hosted report-uri</title>
|
||||||
|
<link>https://www.captainark.net/2018/11/27/self-hosted-report-uri/</link>
|
||||||
|
<pubDate>Tue, 27 Nov 2018 00:00:00 +0100</pubDate>
|
||||||
|
|
||||||
|
<guid>https://www.captainark.net/2018/11/27/self-hosted-report-uri/</guid>
|
||||||
|
<description>I&rsquo;ve been playing with the security headers for this website for the past few days, most notably with the Content-Security-Policy as well as the Expect-CT headers.
|
||||||
|
After having spent a few hours on this, I&rsquo;m pretty happy with the results !</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>DNS zone versioning</title>
|
||||||
|
<link>https://www.captainark.net/2018/04/14/dns-zone-versioning/</link>
|
||||||
|
<pubDate>Sat, 14 Apr 2018 00:00:00 +0100</pubDate>
|
||||||
|
|
||||||
|
<guid>https://www.captainark.net/2018/04/14/dns-zone-versioning/</guid>
|
||||||
|
<description>I&rsquo;ve been using PowerDNS with a SQL backend as a hidden master DNS server for a few years now.
|
||||||
|
I&rsquo;ve been wanting to write a quick shell script to version my DNS zones for a while, and since I&rsquo;ve finally taken the time to do so today, I figured I&rsquo;d share it here.</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>WebDAV with nginx</title>
|
||||||
|
<link>https://www.captainark.net/2016/03/26/webdav-with-nginx/</link>
|
||||||
|
<pubDate>Sat, 26 Mar 2016 00:00:00 +0100</pubDate>
|
||||||
|
|
||||||
|
<guid>https://www.captainark.net/2016/03/26/webdav-with-nginx/</guid>
|
||||||
|
<description>This website has been hosted on an Online.net dedicated server since its creation. I&rsquo;ve been one of their customers for the past 3 years now, and I still don&rsquo;t have anything bad to say about them.</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>MySQL backup script</title>
|
||||||
|
<link>https://www.captainark.net/2016/03/13/mysql-backup-script/</link>
|
||||||
|
<pubDate>Sun, 13 Mar 2016 00:00:00 +0100</pubDate>
|
||||||
|
|
||||||
|
<guid>https://www.captainark.net/2016/03/13/mysql-backup-script/</guid>
|
||||||
|
<description>I wrote a MySQL database backup script a while back. I known they are more than enough of them already floating around the internet, but hey, I figured I&rsquo;d share it here anyway.
|
||||||
|
The script For the script to work, you&rsquo;ll need to edit a few variable to match your configuration.</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>My tmux configuration</title>
|
||||||
|
<link>https://www.captainark.net/2016/02/02/my-tmux-configuration/</link>
|
||||||
|
<pubDate>Tue, 02 Feb 2016 00:00:00 +0100</pubDate>
|
||||||
|
|
||||||
|
<guid>https://www.captainark.net/2016/02/02/my-tmux-configuration/</guid>
|
||||||
|
<description>tmux is a terminal mutiplexer. It lets you have multiples shells running in a single terminal emulator window and it keeps those shells running in the background should you need to close your terminal emulator.</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Debian updates with Ansible</title>
|
||||||
|
<link>https://www.captainark.net/2016/01/31/debian-updates-with-ansible/</link>
|
||||||
|
<pubDate>Sun, 31 Jan 2016 01:00:00 +0100</pubDate>
|
||||||
|
|
||||||
|
<guid>https://www.captainark.net/2016/01/31/debian-updates-with-ansible/</guid>
|
||||||
|
<description>I&rsquo;ve recently bought a HP Proliant Microserver Gen8 to play around with LXC and try new stuff.
|
||||||
|
From the 4 Debian machines I had to keep up-to-date, I now have 7, so it became quite time-consumming to manually SSH to each of them whenever an update became available.</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Private Git repo</title>
|
||||||
|
<link>https://www.captainark.net/2016/01/31/private-git-repo/</link>
|
||||||
|
<pubDate>Sun, 31 Jan 2016 00:00:00 +0100</pubDate>
|
||||||
|
|
||||||
|
<guid>https://www.captainark.net/2016/01/31/private-git-repo/</guid>
|
||||||
|
<description>I&rsquo;ve decided to migrate this blog to Pelican. I&rsquo;ve been playing around with it over the week-end, and it turns out to be way easier to manage than Jekyll. Themes are much easier to install and configure, so it ends up looking better as well !</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Installing Ghost</title>
|
||||||
|
<link>https://www.captainark.net/2015/11/19/installing-ghost/</link>
|
||||||
|
<pubDate>Thu, 19 Nov 2015 00:00:00 +0100</pubDate>
|
||||||
|
|
||||||
|
<guid>https://www.captainark.net/2015/11/19/installing-ghost/</guid>
|
||||||
|
<description>I haven&rsquo;t published an article on here for over a year and a half&hellip; While this was mostly due to a lack of motivation, another reason was that I didn&rsquo;t enjoy the blogging system I was using.</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Flexget init script</title>
|
||||||
|
<link>https://www.captainark.net/2015/05/25/flexget-init-script/</link>
|
||||||
|
<pubDate>Mon, 25 May 2015 00:00:00 +0100</pubDate>
|
||||||
|
|
||||||
|
<guid>https://www.captainark.net/2015/05/25/flexget-init-script/</guid>
|
||||||
|
<description>I&rsquo;ve been using Flexget for the past two years or so as a download automator.
|
||||||
|
Since I wrote an init script for it a while back, and it is compatible with Debian Jessie / systemd, I figured I&rsquo;d share it here.</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Setting up a mail server</title>
|
||||||
|
<link>https://www.captainark.net/2015/04/24/setting-up-a-mail-server/</link>
|
||||||
|
<pubDate>Fri, 24 Apr 2015 00:00:00 +0100</pubDate>
|
||||||
|
|
||||||
|
<guid>https://www.captainark.net/2015/04/24/setting-up-a-mail-server/</guid>
|
||||||
|
<description>In this first tutorial, I&rsquo;ll explain how I&rsquo;ve configured my mail server using the following :
|
||||||
|
A server running Linux Debian (jessie) ; Postfix ; Postfix-policyd-spf-python ; Dovecot ; Spamassassin ; OpenDKIM ; OpenDMARC ; Monit ; Rainloop.</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
</channel>
|
||||||
|
</rss>
|
56
public/js/index.js
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
/**
|
||||||
|
* Main JS file for Casper behaviours
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* globals jQuery, document */
|
||||||
|
(function ($, undefined) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var $document = $(document);
|
||||||
|
|
||||||
|
$document.ready(function () {
|
||||||
|
|
||||||
|
var $postContent = $(".post-content");
|
||||||
|
$postContent.fitVids();
|
||||||
|
|
||||||
|
$(".scroll-down").arctic_scroll();
|
||||||
|
|
||||||
|
$(".menu-button[href='#'], .nav-cover, .nav-close").on("click", function(e){
|
||||||
|
e.preventDefault();
|
||||||
|
$("body").toggleClass("nav-opened nav-closed");
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
// Arctic Scroll by Paul Adam Davis
|
||||||
|
// https://github.com/PaulAdamDavis/Arctic-Scroll
|
||||||
|
$.fn.arctic_scroll = function (options) {
|
||||||
|
|
||||||
|
var defaults = {
|
||||||
|
elem: $(this),
|
||||||
|
speed: 500
|
||||||
|
},
|
||||||
|
|
||||||
|
allOptions = $.extend(defaults, options);
|
||||||
|
|
||||||
|
allOptions.elem.click(function (event) {
|
||||||
|
event.preventDefault();
|
||||||
|
var $this = $(this),
|
||||||
|
$htmlBody = $('html, body'),
|
||||||
|
offset = ($this.attr('data-offset')) ? $this.attr('data-offset') : false,
|
||||||
|
position = ($this.attr('data-position')) ? $this.attr('data-position') : false,
|
||||||
|
toMove;
|
||||||
|
|
||||||
|
if (offset) {
|
||||||
|
toMove = parseInt(offset);
|
||||||
|
$htmlBody.stop(true, false).animate({scrollTop: ($(this.hash).offset().top + toMove) }, allOptions.speed);
|
||||||
|
} else if (position) {
|
||||||
|
toMove = parseInt(position);
|
||||||
|
$htmlBody.stop(true, false).animate({scrollTop: toMove }, allOptions.speed);
|
||||||
|
} else {
|
||||||
|
$htmlBody.stop(true, false).animate({scrollTop: ($(this.hash).offset().top) }, allOptions.speed);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
};
|
||||||
|
})(jQuery);
|
67
public/js/jquery.fitvids.js
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
/*global jQuery */
|
||||||
|
/*jshint browser:true */
|
||||||
|
/*!
|
||||||
|
* FitVids 1.1
|
||||||
|
*
|
||||||
|
* Copyright 2013, Chris Coyier - http://css-tricks.com + Dave Rupert - http://daverupert.com
|
||||||
|
* Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/
|
||||||
|
* Released under the WTFPL license - http://sam.zoy.org/wtfpl/
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function( $ ){
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
$.fn.fitVids = function( options ) {
|
||||||
|
var settings = {
|
||||||
|
customSelector: null
|
||||||
|
};
|
||||||
|
|
||||||
|
if(!document.getElementById('fit-vids-style')) {
|
||||||
|
// appendStyles: https://github.com/toddmotto/fluidvids/blob/master/dist/fluidvids.js
|
||||||
|
var head = document.head || document.getElementsByTagName('head')[0];
|
||||||
|
var css = '.fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}';
|
||||||
|
var div = document.createElement('div');
|
||||||
|
div.innerHTML = '<p>x</p><style id="fit-vids-style">' + css + '</style>';
|
||||||
|
head.appendChild(div.childNodes[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( options ) {
|
||||||
|
$.extend( settings, options );
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.each(function(){
|
||||||
|
var selectors = [
|
||||||
|
"iframe[src*='player.vimeo.com']",
|
||||||
|
"iframe[src*='youtube.com']",
|
||||||
|
"iframe[src*='youtube-nocookie.com']",
|
||||||
|
"iframe[src*='kickstarter.com'][src*='video.html']",
|
||||||
|
"object",
|
||||||
|
"embed"
|
||||||
|
];
|
||||||
|
|
||||||
|
if (settings.customSelector) {
|
||||||
|
selectors.push(settings.customSelector);
|
||||||
|
}
|
||||||
|
|
||||||
|
var $allVideos = $(this).find(selectors.join(','));
|
||||||
|
$allVideos = $allVideos.not("object object"); // SwfObj conflict patch
|
||||||
|
|
||||||
|
$allVideos.each(function(){
|
||||||
|
var $this = $(this);
|
||||||
|
if (this.tagName.toLowerCase() === 'embed' && $this.parent('object').length || $this.parent('.fluid-width-video-wrapper').length) { return; }
|
||||||
|
var height = ( this.tagName.toLowerCase() === 'object' || ($this.attr('height') && !isNaN(parseInt($this.attr('height'), 10))) ) ? parseInt($this.attr('height'), 10) : $this.height(),
|
||||||
|
width = !isNaN(parseInt($this.attr('width'), 10)) ? parseInt($this.attr('width'), 10) : $this.width(),
|
||||||
|
aspectRatio = height / width;
|
||||||
|
if(!$this.attr('id')){
|
||||||
|
var videoID = 'fitvid' + Math.floor(Math.random()*999999);
|
||||||
|
$this.attr('id', videoID);
|
||||||
|
}
|
||||||
|
$this.wrap('<div class="fluid-width-video-wrapper"></div>').parent('.fluid-width-video-wrapper').css('padding-top', (aspectRatio * 100)+"%");
|
||||||
|
$this.removeAttr('height').removeAttr('width');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
// Works with either jQuery or Zepto
|
||||||
|
})( window.jQuery || window.Zepto );
|
4
public/js/jquery.js
vendored
Normal file
1
public/page/1/index.html
Normal file
@ -0,0 +1 @@
|
|||||||
|
<!DOCTYPE html><html><head><title>https://www.captainark.net/</title><link rel="canonical" href="https://www.captainark.net/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://www.captainark.net/" /></head></html>
|
535
public/page/2/index.html
Normal file
@ -0,0 +1,535 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en-us">
|
||||||
|
<head>
|
||||||
|
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:card" content="summary"/>
|
||||||
|
|
||||||
|
<meta name="twitter:image" content="/images/cover.jpg"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:title" content="Sysadmining. All day. Every day."/>
|
||||||
|
<meta name="twitter:description" content="Yet Another Blog about Linux and Networking"/>
|
||||||
|
<meta name="twitter:site" content="@"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:title" content="Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:site_name" content="Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:url" content="https://www.captainark.net/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:image" content="/images/cover.jpg"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:type" content="website" />
|
||||||
|
<meta property="og:description" content="Yet Another Blog about Linux and Networking" />
|
||||||
|
|
||||||
|
|
||||||
|
<title>Sysadmining. All day. Every day.</title>
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="description" content="Yet Another Blog about Linux and Networking" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="HandheldFriendly" content="True" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="/images/favicon.ico">
|
||||||
|
<link rel="apple-touch-icon" href="/images/apple-touch-icon.png" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/screen.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/nav.css" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/solarized-light.min.css">
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js"></script>
|
||||||
|
|
||||||
|
<script>hljs.initHighlightingOnLoad();</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link href="https://www.captainark.net/index.xml" rel="alternate" type="application/rss+xml" title="Sysadmining. All day. Every day." />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="generator" content="Hugo 0.53" />
|
||||||
|
|
||||||
|
<link rel="canonical" href="https://www.captainark.net/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "Website",
|
||||||
|
"publisher": {
|
||||||
|
"@type": "Person",
|
||||||
|
"name": ,
|
||||||
|
|
||||||
|
"image": {
|
||||||
|
"@type": "ImageObject",
|
||||||
|
"url": https://www.captainark.net/images/author.jpg,
|
||||||
|
"width": 250,
|
||||||
|
"height": 250
|
||||||
|
},
|
||||||
|
|
||||||
|
"url": https://www.captainark.net,
|
||||||
|
"sameAs": [
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
],
|
||||||
|
"description": Geek | Gamer | TV Shows Aficionado
|
||||||
|
|
||||||
|
},
|
||||||
|
"url": https://www.captainark.net/,
|
||||||
|
"mainEntityOfPage": {
|
||||||
|
"@type": "WebPage",
|
||||||
|
"@id": https://www.captainark.net/
|
||||||
|
},
|
||||||
|
"description": Yet Another Blog about Linux and Networking
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
(function(f, a, t, h, o, m){
|
||||||
|
a[h]=a[h]||function(){
|
||||||
|
(a[h].q=a[h].q||[]).push(arguments)
|
||||||
|
};
|
||||||
|
o=f.createElement('script'),
|
||||||
|
m=f.getElementsByTagName('script')[0];
|
||||||
|
o.async=1; o.src=t; o.id='fathom-script';
|
||||||
|
m.parentNode.insertBefore(o,m)
|
||||||
|
})(document, window, '//stats.captainark.net/tracker.js', 'fathom');
|
||||||
|
fathom('set', 'siteId', 'GEWGL');
|
||||||
|
fathom('trackPageview');
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.1.5/css/fork-awesome.min.css" integrity="sha256-P64qV9gULPHiZTdrS1nM59toStkgjM0dsf5mK/UwBV4=" crossorigin="anonymous">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body class="nav-closed">
|
||||||
|
|
||||||
|
<div class="nav">
|
||||||
|
<h3 class="nav-title">Menu</h3>
|
||||||
|
<a href="#" class="nav-close">
|
||||||
|
<span class="hidden">Close</span>
|
||||||
|
</a>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h3>This site</h3>
|
||||||
|
<li class="nav-opened nav-current" role="presentation">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/about">About</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/resume">Resume</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<h3>Other services</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://git.captainark.net">Gitea</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://pics.captainark.net">Chevereto</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://paste.captainark.net">Privatebin</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://chat.captainark.net">Rocket.Chat</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="subscribe-button icon-feed" href="https://www.captainark.net/index.xml">Subscribe</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<span class="nav-cover"></span>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="site-wrapper">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<header class="main-header" style="background-image: url(/images/cover.jpg)">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="main-nav overlay clearfix">
|
||||||
|
|
||||||
|
<a class="blog-logo" href="https://www.captainark.net/"><img src="/images/logo.png" alt="Blog Logo" /></a>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="menu-button" href="#"><span class="burger">☰</span><span class="word">Menu</span></a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
<div class="vertical">
|
||||||
|
<div class="main-header-content inner">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h1 class="page-title">Sysadmining. All day. Every day.</h1>
|
||||||
|
<h2 class="page-description">Yet Another Blog about Linux and Networking</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<a class="scroll-down icon-arrow-left" href="#content"><span class="hidden">Scroll Down</span></a>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
<main id="content" class="content" role="main">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="extra-pagination inner">
|
||||||
|
<nav class="pagination" role="navigation">
|
||||||
|
|
||||||
|
<a class="newer-posts" href="/">← Newer Posts</a>
|
||||||
|
|
||||||
|
<span class="page-number">Page 2 of 3</span>
|
||||||
|
|
||||||
|
<a class="older-posts" href="/page/3/">Older Posts →</a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post post">
|
||||||
|
<header class="post-header">
|
||||||
|
<h2 class="post-title"><a href="/2016/02/02/my-tmux-configuration/">My tmux configuration</a></h2>
|
||||||
|
</header>
|
||||||
|
<section class="post-excerpt">
|
||||||
|
|
||||||
|
<p>tmux is a terminal mutiplexer. It lets you have multiples shells running in a single terminal emulator window and it keeps those shells running in the background should you need to close your terminal emulator. <a class="read-more" href="/2016/02/02/my-tmux-configuration/">»</a></p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
<footer class="post-meta">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<img class="author-thumb" src="/images/author.jpg" alt="Author image" nopin="nopin" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Antoine Joubert
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<time class="post-date" datetime="2016-02-02T00:00:00+01:00">
|
||||||
|
02 February 2016
|
||||||
|
</time>
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post post">
|
||||||
|
<header class="post-header">
|
||||||
|
<h2 class="post-title"><a href="/2016/01/31/debian-updates-with-ansible/">Debian updates with Ansible</a></h2>
|
||||||
|
</header>
|
||||||
|
<section class="post-excerpt">
|
||||||
|
|
||||||
|
<p>I’ve recently bought a HP Proliant Microserver Gen8 to play around with LXC and try new stuff.
|
||||||
|
From the 4 Debian machines I had to keep up-to-date, I now have 7, so it became quite time-consumming to manually SSH to each of them whenever an update became available. <a class="read-more" href="/2016/01/31/debian-updates-with-ansible/">»</a></p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
<footer class="post-meta">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<img class="author-thumb" src="/images/author.jpg" alt="Author image" nopin="nopin" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Antoine Joubert
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<time class="post-date" datetime="2016-01-31T01:00:00+01:00">
|
||||||
|
31 January 2016
|
||||||
|
</time>
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post post">
|
||||||
|
<header class="post-header">
|
||||||
|
<h2 class="post-title"><a href="/2016/01/31/private-git-repo/">Private Git repo</a></h2>
|
||||||
|
</header>
|
||||||
|
<section class="post-excerpt">
|
||||||
|
|
||||||
|
<p>I’ve decided to migrate this blog to Pelican. I’ve been playing around with it over the week-end, and it turns out to be way easier to manage than Jekyll. Themes are much easier to install and configure, so it ends up looking better as well ! <a class="read-more" href="/2016/01/31/private-git-repo/">»</a></p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
<footer class="post-meta">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<img class="author-thumb" src="/images/author.jpg" alt="Author image" nopin="nopin" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Antoine Joubert
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<time class="post-date" datetime="2016-01-31T00:00:00+01:00">
|
||||||
|
31 January 2016
|
||||||
|
</time>
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post post">
|
||||||
|
<header class="post-header">
|
||||||
|
<h2 class="post-title"><a href="/2015/11/19/installing-ghost/">Installing Ghost</a></h2>
|
||||||
|
</header>
|
||||||
|
<section class="post-excerpt">
|
||||||
|
|
||||||
|
<p>I haven’t published an article on here for over a year and a half… While this was mostly due to a lack of motivation, another reason was that I didn’t enjoy the blogging system I was using. <a class="read-more" href="/2015/11/19/installing-ghost/">»</a></p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
<footer class="post-meta">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<img class="author-thumb" src="/images/author.jpg" alt="Author image" nopin="nopin" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Antoine Joubert
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<time class="post-date" datetime="2015-11-19T00:00:00+01:00">
|
||||||
|
19 November 2015
|
||||||
|
</time>
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post post">
|
||||||
|
<header class="post-header">
|
||||||
|
<h2 class="post-title"><a href="/2015/05/25/flexget-init-script/">Flexget init script</a></h2>
|
||||||
|
</header>
|
||||||
|
<section class="post-excerpt">
|
||||||
|
|
||||||
|
<p>I’ve been using Flexget for the past two years or so as a download automator.
|
||||||
|
Since I wrote an init script for it a while back, and it is compatible with Debian Jessie / systemd, I figured I’d share it here. <a class="read-more" href="/2015/05/25/flexget-init-script/">»</a></p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
<footer class="post-meta">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<img class="author-thumb" src="/images/author.jpg" alt="Author image" nopin="nopin" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Antoine Joubert
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<time class="post-date" datetime="2015-05-25T00:00:00+01:00">
|
||||||
|
25 May 2015
|
||||||
|
</time>
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="pagination" role="navigation">
|
||||||
|
|
||||||
|
<a class="newer-posts" href="/">← Newer Posts</a>
|
||||||
|
|
||||||
|
<span class="page-number">Page 2 of 3</span>
|
||||||
|
|
||||||
|
<a class="older-posts" href="/page/3/">Older Posts →</a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
|
||||||
|
<center>
|
||||||
|
<a class="fa-icons" href="mailto:contact@captainark.net">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-envelope fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://twitter.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://social.captainark.net/users/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-mastodon-alt fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://github.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.last.fm/user/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-lastfm fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://steamcommunity.com/id/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-steam fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.twitch.tv/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitch fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</center>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="site-footer clearfix">
|
||||||
|
<section class="copyright"><a href="">Sysadmining. All day. Every day.</a> © 2015 - 2019</section>
|
||||||
|
|
||||||
|
<section class="poweredby">Proudly generated by <a class="icon-hugo" href="http://gohugo.io">HUGO</a>, with <a class="icon-theme" href="https://github.com/vjeantet/hugo-theme-casper">Casper</a> theme</section>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript" src="/js/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/jquery.fitvids.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/index.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
398
public/page/3/index.html
Normal file
@ -0,0 +1,398 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en-us">
|
||||||
|
<head>
|
||||||
|
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:card" content="summary"/>
|
||||||
|
|
||||||
|
<meta name="twitter:image" content="/images/cover.jpg"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:title" content="Sysadmining. All day. Every day."/>
|
||||||
|
<meta name="twitter:description" content="Yet Another Blog about Linux and Networking"/>
|
||||||
|
<meta name="twitter:site" content="@"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:title" content="Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:site_name" content="Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:url" content="https://www.captainark.net/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:image" content="/images/cover.jpg"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:type" content="website" />
|
||||||
|
<meta property="og:description" content="Yet Another Blog about Linux and Networking" />
|
||||||
|
|
||||||
|
|
||||||
|
<title>Sysadmining. All day. Every day.</title>
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="description" content="Yet Another Blog about Linux and Networking" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="HandheldFriendly" content="True" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="/images/favicon.ico">
|
||||||
|
<link rel="apple-touch-icon" href="/images/apple-touch-icon.png" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/screen.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/nav.css" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/solarized-light.min.css">
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js"></script>
|
||||||
|
|
||||||
|
<script>hljs.initHighlightingOnLoad();</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link href="https://www.captainark.net/index.xml" rel="alternate" type="application/rss+xml" title="Sysadmining. All day. Every day." />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="generator" content="Hugo 0.53" />
|
||||||
|
|
||||||
|
<link rel="canonical" href="https://www.captainark.net/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "Website",
|
||||||
|
"publisher": {
|
||||||
|
"@type": "Person",
|
||||||
|
"name": ,
|
||||||
|
|
||||||
|
"image": {
|
||||||
|
"@type": "ImageObject",
|
||||||
|
"url": https://www.captainark.net/images/author.jpg,
|
||||||
|
"width": 250,
|
||||||
|
"height": 250
|
||||||
|
},
|
||||||
|
|
||||||
|
"url": https://www.captainark.net,
|
||||||
|
"sameAs": [
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
],
|
||||||
|
"description": Geek | Gamer | TV Shows Aficionado
|
||||||
|
|
||||||
|
},
|
||||||
|
"url": https://www.captainark.net/,
|
||||||
|
"mainEntityOfPage": {
|
||||||
|
"@type": "WebPage",
|
||||||
|
"@id": https://www.captainark.net/
|
||||||
|
},
|
||||||
|
"description": Yet Another Blog about Linux and Networking
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
(function(f, a, t, h, o, m){
|
||||||
|
a[h]=a[h]||function(){
|
||||||
|
(a[h].q=a[h].q||[]).push(arguments)
|
||||||
|
};
|
||||||
|
o=f.createElement('script'),
|
||||||
|
m=f.getElementsByTagName('script')[0];
|
||||||
|
o.async=1; o.src=t; o.id='fathom-script';
|
||||||
|
m.parentNode.insertBefore(o,m)
|
||||||
|
})(document, window, '//stats.captainark.net/tracker.js', 'fathom');
|
||||||
|
fathom('set', 'siteId', 'GEWGL');
|
||||||
|
fathom('trackPageview');
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.1.5/css/fork-awesome.min.css" integrity="sha256-P64qV9gULPHiZTdrS1nM59toStkgjM0dsf5mK/UwBV4=" crossorigin="anonymous">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body class="nav-closed">
|
||||||
|
|
||||||
|
<div class="nav">
|
||||||
|
<h3 class="nav-title">Menu</h3>
|
||||||
|
<a href="#" class="nav-close">
|
||||||
|
<span class="hidden">Close</span>
|
||||||
|
</a>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h3>This site</h3>
|
||||||
|
<li class="nav-opened nav-current" role="presentation">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/about">About</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/resume">Resume</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<h3>Other services</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://git.captainark.net">Gitea</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://pics.captainark.net">Chevereto</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://paste.captainark.net">Privatebin</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://chat.captainark.net">Rocket.Chat</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="subscribe-button icon-feed" href="https://www.captainark.net/index.xml">Subscribe</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<span class="nav-cover"></span>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="site-wrapper">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<header class="main-header" style="background-image: url(/images/cover.jpg)">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="main-nav overlay clearfix">
|
||||||
|
|
||||||
|
<a class="blog-logo" href="https://www.captainark.net/"><img src="/images/logo.png" alt="Blog Logo" /></a>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="menu-button" href="#"><span class="burger">☰</span><span class="word">Menu</span></a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
<div class="vertical">
|
||||||
|
<div class="main-header-content inner">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h1 class="page-title">Sysadmining. All day. Every day.</h1>
|
||||||
|
<h2 class="page-description">Yet Another Blog about Linux and Networking</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<a class="scroll-down icon-arrow-left" href="#content"><span class="hidden">Scroll Down</span></a>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
<main id="content" class="content" role="main">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="extra-pagination inner">
|
||||||
|
<nav class="pagination" role="navigation">
|
||||||
|
|
||||||
|
<a class="newer-posts" href="/page/2/">← Newer Posts</a>
|
||||||
|
|
||||||
|
<span class="page-number">Page 3 of 3</span>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post post">
|
||||||
|
<header class="post-header">
|
||||||
|
<h2 class="post-title"><a href="/2015/04/24/setting-up-a-mail-server/">Setting up a mail server</a></h2>
|
||||||
|
</header>
|
||||||
|
<section class="post-excerpt">
|
||||||
|
|
||||||
|
<p>In this first tutorial, I’ll explain how I’ve configured my mail server using the following :
|
||||||
|
A server running Linux Debian (jessie) ; Postfix ; Postfix-policyd-spf-python ; Dovecot ; Spamassassin ; OpenDKIM ; OpenDMARC ; Monit ; Rainloop. <a class="read-more" href="/2015/04/24/setting-up-a-mail-server/">»</a></p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
<footer class="post-meta">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<img class="author-thumb" src="/images/author.jpg" alt="Author image" nopin="nopin" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Antoine Joubert
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<time class="post-date" datetime="2015-04-24T00:00:00+01:00">
|
||||||
|
24 April 2015
|
||||||
|
</time>
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="pagination" role="navigation">
|
||||||
|
|
||||||
|
<a class="newer-posts" href="/page/2/">← Newer Posts</a>
|
||||||
|
|
||||||
|
<span class="page-number">Page 3 of 3</span>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
|
||||||
|
<center>
|
||||||
|
<a class="fa-icons" href="mailto:contact@captainark.net">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-envelope fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://twitter.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://social.captainark.net/users/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-mastodon-alt fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://github.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.last.fm/user/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-lastfm fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://steamcommunity.com/id/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-steam fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.twitch.tv/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitch fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</center>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="site-footer clearfix">
|
||||||
|
<section class="copyright"><a href="">Sysadmining. All day. Every day.</a> © 2015 - 2019</section>
|
||||||
|
|
||||||
|
<section class="poweredby">Proudly generated by <a class="icon-hugo" href="http://gohugo.io">HUGO</a>, with <a class="icon-theme" href="https://github.com/vjeantet/hugo-theme-casper">Casper</a> theme</section>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript" src="/js/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/jquery.fitvids.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/index.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
477
public/post/index.html
Normal file
@ -0,0 +1,477 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en-us">
|
||||||
|
<head>
|
||||||
|
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:card" content="summary"/>
|
||||||
|
|
||||||
|
<meta name="twitter:image" content="/images/cover.jpg"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:title" content="Posts"/>
|
||||||
|
<meta name="twitter:description" content="Yet Another Blog about Linux and Networking"/>
|
||||||
|
<meta name="twitter:site" content="@"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:title" content="Posts · Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:site_name" content="Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:url" content="https://www.captainark.net/post/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:image" content="/images/cover.jpg"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:type" content="website" />
|
||||||
|
<meta property="og:description" content="Yet Another Blog about Linux and Networking" />
|
||||||
|
|
||||||
|
|
||||||
|
<title>Posts · Sysadmining. All day. Every day.</title>
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="description" content="Yet Another Blog about Linux and Networking" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="HandheldFriendly" content="True" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="/images/favicon.ico">
|
||||||
|
<link rel="apple-touch-icon" href="/images/apple-touch-icon.png" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/screen.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/nav.css" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/solarized-light.min.css">
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js"></script>
|
||||||
|
|
||||||
|
<script>hljs.initHighlightingOnLoad();</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link href="/index.xml" rel="alternate" type="application/rss+xml" title="Sysadmining. All day. Every day." />
|
||||||
|
|
||||||
|
|
||||||
|
<link href="https://www.captainark.net/post/index.xml" rel="alternate" type="application/rss+xml" title="Posts · Sysadmining. All day. Every day." />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="generator" content="Hugo 0.53" />
|
||||||
|
|
||||||
|
<link rel="canonical" href="https://www.captainark.net/post/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "Website",
|
||||||
|
"publisher": {
|
||||||
|
"@type": "Person",
|
||||||
|
"name": ,
|
||||||
|
|
||||||
|
"image": {
|
||||||
|
"@type": "ImageObject",
|
||||||
|
"url": https://www.captainark.net/images/author.jpg,
|
||||||
|
"width": 250,
|
||||||
|
"height": 250
|
||||||
|
},
|
||||||
|
|
||||||
|
"url": https://www.captainark.net,
|
||||||
|
"sameAs": [
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
],
|
||||||
|
"description": Geek | Gamer | TV Shows Aficionado
|
||||||
|
|
||||||
|
},
|
||||||
|
"url": https://www.captainark.net/,
|
||||||
|
"mainEntityOfPage": {
|
||||||
|
"@type": "WebPage",
|
||||||
|
"@id": https://www.captainark.net/
|
||||||
|
},
|
||||||
|
"description": Yet Another Blog about Linux and Networking
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
(function(f, a, t, h, o, m){
|
||||||
|
a[h]=a[h]||function(){
|
||||||
|
(a[h].q=a[h].q||[]).push(arguments)
|
||||||
|
};
|
||||||
|
o=f.createElement('script'),
|
||||||
|
m=f.getElementsByTagName('script')[0];
|
||||||
|
o.async=1; o.src=t; o.id='fathom-script';
|
||||||
|
m.parentNode.insertBefore(o,m)
|
||||||
|
})(document, window, '//stats.captainark.net/tracker.js', 'fathom');
|
||||||
|
fathom('set', 'siteId', 'GEWGL');
|
||||||
|
fathom('trackPageview');
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.1.5/css/fork-awesome.min.css" integrity="sha256-P64qV9gULPHiZTdrS1nM59toStkgjM0dsf5mK/UwBV4=" crossorigin="anonymous">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body class="nav-closed">
|
||||||
|
|
||||||
|
<div class="nav">
|
||||||
|
<h3 class="nav-title">Menu</h3>
|
||||||
|
<a href="#" class="nav-close">
|
||||||
|
<span class="hidden">Close</span>
|
||||||
|
</a>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h3>This site</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/about">About</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/resume">Resume</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<h3>Other services</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://git.captainark.net">Gitea</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://pics.captainark.net">Chevereto</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://paste.captainark.net">Privatebin</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://chat.captainark.net">Rocket.Chat</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="subscribe-button icon-feed" href="https://www.captainark.net/post/index.xml">Subscribe</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<span class="nav-cover"></span>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="site-wrapper">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<header class="main-header tag-head" style="background-image: url(/images/cover.jpg)">
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="main-nav overlay clearfix">
|
||||||
|
|
||||||
|
<a class="blog-logo" href="https://www.captainark.net/"><img src="/images/logo.png" alt="Home" /></a>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="menu-button" href="#"><span class="burger">☰</span><span class="word">Menu</span></a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
<div class="vertical">
|
||||||
|
<div class="main-header-content inner">
|
||||||
|
<h1 class="page-title">Posts</h1>
|
||||||
|
<h2 class="page-description">
|
||||||
|
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<main class="content" role="main">
|
||||||
|
|
||||||
|
|
||||||
|
<div class="extra-pagination inner">
|
||||||
|
<nav class="pagination" role="navigation">
|
||||||
|
|
||||||
|
<span class="page-number">Page 1 of 3</span>
|
||||||
|
|
||||||
|
<a class="older-posts" href="/post/page/2/">Older Posts →</a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post post">
|
||||||
|
<header class="post-header">
|
||||||
|
<h2 class="post-title"><a href="/2018/12/03/debian-repos-over-https/">Debian repos over HTTPS</a></h2>
|
||||||
|
</header>
|
||||||
|
<section class="post-excerpt">
|
||||||
|
|
||||||
|
<p>I’ve been using deb.debian.org as the main debian repo on my servers pretty much since it’s become available.
|
||||||
|
I’ve recently realized that the service is available over HTTPS, and since I’m all about encrypting all of the things, I figured I’d configure it on my servers. <a class="read-more" href="/2018/12/03/debian-repos-over-https/">»</a></p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
<footer class="post-meta">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<img class="author-thumb" src="/images/author.jpg" alt="Author image" nopin="nopin" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Antoine Joubert
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<time class="post-date" datetime="2018-12-03T00:00:00+01:00">
|
||||||
|
03 December 2018
|
||||||
|
</time>
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post post">
|
||||||
|
<header class="post-header">
|
||||||
|
<h2 class="post-title"><a href="/2018/11/27/self-hosted-report-uri/">Self-hosted report-uri</a></h2>
|
||||||
|
</header>
|
||||||
|
<section class="post-excerpt">
|
||||||
|
|
||||||
|
<p>I’ve been playing with the security headers for this website for the past few days, most notably with the Content-Security-Policy as well as the Expect-CT headers.
|
||||||
|
After having spent a few hours on this, I’m pretty happy with the results ! <a class="read-more" href="/2018/11/27/self-hosted-report-uri/">»</a></p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
<footer class="post-meta">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<img class="author-thumb" src="/images/author.jpg" alt="Author image" nopin="nopin" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Antoine Joubert
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<time class="post-date" datetime="2018-11-27T00:00:00+01:00">
|
||||||
|
27 November 2018
|
||||||
|
</time>
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post post">
|
||||||
|
<header class="post-header">
|
||||||
|
<h2 class="post-title"><a href="/2018/04/14/dns-zone-versioning/">DNS zone versioning</a></h2>
|
||||||
|
</header>
|
||||||
|
<section class="post-excerpt">
|
||||||
|
|
||||||
|
<p>I’ve been using PowerDNS with a SQL backend as a hidden master DNS server for a few years now.
|
||||||
|
I’ve been wanting to write a quick shell script to version my DNS zones for a while, and since I’ve finally taken the time to do so today, I figured I’d share it here. <a class="read-more" href="/2018/04/14/dns-zone-versioning/">»</a></p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
<footer class="post-meta">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<img class="author-thumb" src="/images/author.jpg" alt="Author image" nopin="nopin" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Antoine Joubert
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<time class="post-date" datetime="2018-04-14T00:00:00+01:00">
|
||||||
|
14 April 2018
|
||||||
|
</time>
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post post">
|
||||||
|
<header class="post-header">
|
||||||
|
<h2 class="post-title"><a href="/2016/03/26/webdav-with-nginx/">WebDAV with nginx</a></h2>
|
||||||
|
</header>
|
||||||
|
<section class="post-excerpt">
|
||||||
|
|
||||||
|
<p>This website has been hosted on an Online.net dedicated server since its creation. I’ve been one of their customers for the past 3 years now, and I still don’t have anything bad to say about them. <a class="read-more" href="/2016/03/26/webdav-with-nginx/">»</a></p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
<footer class="post-meta">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<img class="author-thumb" src="/images/author.jpg" alt="Author image" nopin="nopin" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Antoine Joubert
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<time class="post-date" datetime="2016-03-26T00:00:00+01:00">
|
||||||
|
26 March 2016
|
||||||
|
</time>
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post post">
|
||||||
|
<header class="post-header">
|
||||||
|
<h2 class="post-title"><a href="/2016/03/13/mysql-backup-script/">MySQL backup script</a></h2>
|
||||||
|
</header>
|
||||||
|
<section class="post-excerpt">
|
||||||
|
|
||||||
|
<p>I wrote a MySQL database backup script a while back. I known they are more than enough of them already floating around the internet, but hey, I figured I’d share it here anyway.
|
||||||
|
The script For the script to work, you’ll need to edit a few variable to match your configuration. <a class="read-more" href="/2016/03/13/mysql-backup-script/">»</a></p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
<footer class="post-meta">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<img class="author-thumb" src="/images/author.jpg" alt="Author image" nopin="nopin" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Antoine Joubert
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<time class="post-date" datetime="2016-03-13T00:00:00+01:00">
|
||||||
|
13 March 2016
|
||||||
|
</time>
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="pagination" role="navigation">
|
||||||
|
|
||||||
|
<span class="page-number">Page 1 of 3</span>
|
||||||
|
|
||||||
|
<a class="older-posts" href="/post/page/2/">Older Posts →</a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<center>
|
||||||
|
<a class="fa-icons" href="mailto:contact@captainark.net">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-envelope fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://twitter.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://social.captainark.net/users/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-mastodon-alt fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://github.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.last.fm/user/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-lastfm fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://steamcommunity.com/id/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-steam fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.twitch.tv/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitch fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</center>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="site-footer clearfix">
|
||||||
|
<section class="copyright"><a href="">Sysadmining. All day. Every day.</a> © 2015 - 2019</section>
|
||||||
|
|
||||||
|
<section class="poweredby">Proudly generated by <a class="icon-hugo" href="http://gohugo.io">HUGO</a>, with <a class="icon-theme" href="https://github.com/vjeantet/hugo-theme-casper">Casper</a> theme</section>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript" src="/js/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/jquery.fitvids.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/index.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
122
public/post/index.xml
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||||
|
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||||
|
<channel>
|
||||||
|
<title>Posts on Sysadmining. All day. Every day.</title>
|
||||||
|
<link>https://www.captainark.net/post/</link>
|
||||||
|
<description>Recent content in Posts on Sysadmining. All day. Every day.</description>
|
||||||
|
<generator>Hugo -- gohugo.io</generator>
|
||||||
|
<language>en-us</language>
|
||||||
|
<copyright>© 2015 - 2019</copyright>
|
||||||
|
<lastBuildDate>Mon, 03 Dec 2018 00:00:00 +0100</lastBuildDate>
|
||||||
|
|
||||||
|
<atom:link href="https://www.captainark.net/post/index.xml" rel="self" type="application/rss+xml" />
|
||||||
|
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Debian repos over HTTPS</title>
|
||||||
|
<link>https://www.captainark.net/2018/12/03/debian-repos-over-https/</link>
|
||||||
|
<pubDate>Mon, 03 Dec 2018 00:00:00 +0100</pubDate>
|
||||||
|
|
||||||
|
<guid>https://www.captainark.net/2018/12/03/debian-repos-over-https/</guid>
|
||||||
|
<description>I&rsquo;ve been using deb.debian.org as the main debian repo on my servers pretty much since it&rsquo;s become available.
|
||||||
|
I&rsquo;ve recently realized that the service is available over HTTPS, and since I&rsquo;m all about encrypting all of the things, I figured I&rsquo;d configure it on my servers.</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Self-hosted report-uri</title>
|
||||||
|
<link>https://www.captainark.net/2018/11/27/self-hosted-report-uri/</link>
|
||||||
|
<pubDate>Tue, 27 Nov 2018 00:00:00 +0100</pubDate>
|
||||||
|
|
||||||
|
<guid>https://www.captainark.net/2018/11/27/self-hosted-report-uri/</guid>
|
||||||
|
<description>I&rsquo;ve been playing with the security headers for this website for the past few days, most notably with the Content-Security-Policy as well as the Expect-CT headers.
|
||||||
|
After having spent a few hours on this, I&rsquo;m pretty happy with the results !</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>DNS zone versioning</title>
|
||||||
|
<link>https://www.captainark.net/2018/04/14/dns-zone-versioning/</link>
|
||||||
|
<pubDate>Sat, 14 Apr 2018 00:00:00 +0100</pubDate>
|
||||||
|
|
||||||
|
<guid>https://www.captainark.net/2018/04/14/dns-zone-versioning/</guid>
|
||||||
|
<description>I&rsquo;ve been using PowerDNS with a SQL backend as a hidden master DNS server for a few years now.
|
||||||
|
I&rsquo;ve been wanting to write a quick shell script to version my DNS zones for a while, and since I&rsquo;ve finally taken the time to do so today, I figured I&rsquo;d share it here.</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>WebDAV with nginx</title>
|
||||||
|
<link>https://www.captainark.net/2016/03/26/webdav-with-nginx/</link>
|
||||||
|
<pubDate>Sat, 26 Mar 2016 00:00:00 +0100</pubDate>
|
||||||
|
|
||||||
|
<guid>https://www.captainark.net/2016/03/26/webdav-with-nginx/</guid>
|
||||||
|
<description>This website has been hosted on an Online.net dedicated server since its creation. I&rsquo;ve been one of their customers for the past 3 years now, and I still don&rsquo;t have anything bad to say about them.</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>MySQL backup script</title>
|
||||||
|
<link>https://www.captainark.net/2016/03/13/mysql-backup-script/</link>
|
||||||
|
<pubDate>Sun, 13 Mar 2016 00:00:00 +0100</pubDate>
|
||||||
|
|
||||||
|
<guid>https://www.captainark.net/2016/03/13/mysql-backup-script/</guid>
|
||||||
|
<description>I wrote a MySQL database backup script a while back. I known they are more than enough of them already floating around the internet, but hey, I figured I&rsquo;d share it here anyway.
|
||||||
|
The script For the script to work, you&rsquo;ll need to edit a few variable to match your configuration.</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>My tmux configuration</title>
|
||||||
|
<link>https://www.captainark.net/2016/02/02/my-tmux-configuration/</link>
|
||||||
|
<pubDate>Tue, 02 Feb 2016 00:00:00 +0100</pubDate>
|
||||||
|
|
||||||
|
<guid>https://www.captainark.net/2016/02/02/my-tmux-configuration/</guid>
|
||||||
|
<description>tmux is a terminal mutiplexer. It lets you have multiples shells running in a single terminal emulator window and it keeps those shells running in the background should you need to close your terminal emulator.</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Debian updates with Ansible</title>
|
||||||
|
<link>https://www.captainark.net/2016/01/31/debian-updates-with-ansible/</link>
|
||||||
|
<pubDate>Sun, 31 Jan 2016 01:00:00 +0100</pubDate>
|
||||||
|
|
||||||
|
<guid>https://www.captainark.net/2016/01/31/debian-updates-with-ansible/</guid>
|
||||||
|
<description>I&rsquo;ve recently bought a HP Proliant Microserver Gen8 to play around with LXC and try new stuff.
|
||||||
|
From the 4 Debian machines I had to keep up-to-date, I now have 7, so it became quite time-consumming to manually SSH to each of them whenever an update became available.</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Private Git repo</title>
|
||||||
|
<link>https://www.captainark.net/2016/01/31/private-git-repo/</link>
|
||||||
|
<pubDate>Sun, 31 Jan 2016 00:00:00 +0100</pubDate>
|
||||||
|
|
||||||
|
<guid>https://www.captainark.net/2016/01/31/private-git-repo/</guid>
|
||||||
|
<description>I&rsquo;ve decided to migrate this blog to Pelican. I&rsquo;ve been playing around with it over the week-end, and it turns out to be way easier to manage than Jekyll. Themes are much easier to install and configure, so it ends up looking better as well !</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Installing Ghost</title>
|
||||||
|
<link>https://www.captainark.net/2015/11/19/installing-ghost/</link>
|
||||||
|
<pubDate>Thu, 19 Nov 2015 00:00:00 +0100</pubDate>
|
||||||
|
|
||||||
|
<guid>https://www.captainark.net/2015/11/19/installing-ghost/</guid>
|
||||||
|
<description>I haven&rsquo;t published an article on here for over a year and a half&hellip; While this was mostly due to a lack of motivation, another reason was that I didn&rsquo;t enjoy the blogging system I was using.</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Flexget init script</title>
|
||||||
|
<link>https://www.captainark.net/2015/05/25/flexget-init-script/</link>
|
||||||
|
<pubDate>Mon, 25 May 2015 00:00:00 +0100</pubDate>
|
||||||
|
|
||||||
|
<guid>https://www.captainark.net/2015/05/25/flexget-init-script/</guid>
|
||||||
|
<description>I&rsquo;ve been using Flexget for the past two years or so as a download automator.
|
||||||
|
Since I wrote an init script for it a while back, and it is compatible with Debian Jessie / systemd, I figured I&rsquo;d share it here.</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<title>Setting up a mail server</title>
|
||||||
|
<link>https://www.captainark.net/2015/04/24/setting-up-a-mail-server/</link>
|
||||||
|
<pubDate>Fri, 24 Apr 2015 00:00:00 +0100</pubDate>
|
||||||
|
|
||||||
|
<guid>https://www.captainark.net/2015/04/24/setting-up-a-mail-server/</guid>
|
||||||
|
<description>In this first tutorial, I&rsquo;ll explain how I&rsquo;ve configured my mail server using the following :
|
||||||
|
A server running Linux Debian (jessie) ; Postfix ; Postfix-policyd-spf-python ; Dovecot ; Spamassassin ; OpenDKIM ; OpenDMARC ; Monit ; Rainloop.</description>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
</channel>
|
||||||
|
</rss>
|
1
public/post/page/1/index.html
Normal file
@ -0,0 +1 @@
|
|||||||
|
<!DOCTYPE html><html><head><title>https://www.captainark.net/post/</title><link rel="canonical" href="https://www.captainark.net/post/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://www.captainark.net/post/" /></head></html>
|
479
public/post/page/2/index.html
Normal file
@ -0,0 +1,479 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en-us">
|
||||||
|
<head>
|
||||||
|
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:card" content="summary"/>
|
||||||
|
|
||||||
|
<meta name="twitter:image" content="/images/cover.jpg"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:title" content="Posts"/>
|
||||||
|
<meta name="twitter:description" content="Yet Another Blog about Linux and Networking"/>
|
||||||
|
<meta name="twitter:site" content="@"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:title" content="Posts · Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:site_name" content="Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:url" content="https://www.captainark.net/post/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:image" content="/images/cover.jpg"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:type" content="website" />
|
||||||
|
<meta property="og:description" content="Yet Another Blog about Linux and Networking" />
|
||||||
|
|
||||||
|
|
||||||
|
<title>Posts · Sysadmining. All day. Every day.</title>
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="description" content="Yet Another Blog about Linux and Networking" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="HandheldFriendly" content="True" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="/images/favicon.ico">
|
||||||
|
<link rel="apple-touch-icon" href="/images/apple-touch-icon.png" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/screen.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/nav.css" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/solarized-light.min.css">
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js"></script>
|
||||||
|
|
||||||
|
<script>hljs.initHighlightingOnLoad();</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link href="/index.xml" rel="alternate" type="application/rss+xml" title="Sysadmining. All day. Every day." />
|
||||||
|
|
||||||
|
|
||||||
|
<link href="https://www.captainark.net/post/index.xml" rel="alternate" type="application/rss+xml" title="Posts · Sysadmining. All day. Every day." />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="generator" content="Hugo 0.53" />
|
||||||
|
|
||||||
|
<link rel="canonical" href="https://www.captainark.net/post/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "Website",
|
||||||
|
"publisher": {
|
||||||
|
"@type": "Person",
|
||||||
|
"name": ,
|
||||||
|
|
||||||
|
"image": {
|
||||||
|
"@type": "ImageObject",
|
||||||
|
"url": https://www.captainark.net/images/author.jpg,
|
||||||
|
"width": 250,
|
||||||
|
"height": 250
|
||||||
|
},
|
||||||
|
|
||||||
|
"url": https://www.captainark.net,
|
||||||
|
"sameAs": [
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
],
|
||||||
|
"description": Geek | Gamer | TV Shows Aficionado
|
||||||
|
|
||||||
|
},
|
||||||
|
"url": https://www.captainark.net/,
|
||||||
|
"mainEntityOfPage": {
|
||||||
|
"@type": "WebPage",
|
||||||
|
"@id": https://www.captainark.net/
|
||||||
|
},
|
||||||
|
"description": Yet Another Blog about Linux and Networking
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
(function(f, a, t, h, o, m){
|
||||||
|
a[h]=a[h]||function(){
|
||||||
|
(a[h].q=a[h].q||[]).push(arguments)
|
||||||
|
};
|
||||||
|
o=f.createElement('script'),
|
||||||
|
m=f.getElementsByTagName('script')[0];
|
||||||
|
o.async=1; o.src=t; o.id='fathom-script';
|
||||||
|
m.parentNode.insertBefore(o,m)
|
||||||
|
})(document, window, '//stats.captainark.net/tracker.js', 'fathom');
|
||||||
|
fathom('set', 'siteId', 'GEWGL');
|
||||||
|
fathom('trackPageview');
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.1.5/css/fork-awesome.min.css" integrity="sha256-P64qV9gULPHiZTdrS1nM59toStkgjM0dsf5mK/UwBV4=" crossorigin="anonymous">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body class="nav-closed">
|
||||||
|
|
||||||
|
<div class="nav">
|
||||||
|
<h3 class="nav-title">Menu</h3>
|
||||||
|
<a href="#" class="nav-close">
|
||||||
|
<span class="hidden">Close</span>
|
||||||
|
</a>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h3>This site</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/about">About</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/resume">Resume</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<h3>Other services</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://git.captainark.net">Gitea</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://pics.captainark.net">Chevereto</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://paste.captainark.net">Privatebin</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://chat.captainark.net">Rocket.Chat</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="subscribe-button icon-feed" href="https://www.captainark.net/post/index.xml">Subscribe</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<span class="nav-cover"></span>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="site-wrapper">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<header class="main-header tag-head" style="background-image: url(/images/cover.jpg)">
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="main-nav overlay clearfix">
|
||||||
|
|
||||||
|
<a class="blog-logo" href="https://www.captainark.net/"><img src="/images/logo.png" alt="Home" /></a>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="menu-button" href="#"><span class="burger">☰</span><span class="word">Menu</span></a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
<div class="vertical">
|
||||||
|
<div class="main-header-content inner">
|
||||||
|
<h1 class="page-title">Posts</h1>
|
||||||
|
<h2 class="page-description">
|
||||||
|
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<main class="content" role="main">
|
||||||
|
|
||||||
|
|
||||||
|
<div class="extra-pagination inner">
|
||||||
|
<nav class="pagination" role="navigation">
|
||||||
|
|
||||||
|
<a class="newer-posts" href="/post/">← Newer Posts</a>
|
||||||
|
|
||||||
|
<span class="page-number">Page 2 of 3</span>
|
||||||
|
|
||||||
|
<a class="older-posts" href="/post/page/3/">Older Posts →</a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post post">
|
||||||
|
<header class="post-header">
|
||||||
|
<h2 class="post-title"><a href="/2016/02/02/my-tmux-configuration/">My tmux configuration</a></h2>
|
||||||
|
</header>
|
||||||
|
<section class="post-excerpt">
|
||||||
|
|
||||||
|
<p>tmux is a terminal mutiplexer. It lets you have multiples shells running in a single terminal emulator window and it keeps those shells running in the background should you need to close your terminal emulator. <a class="read-more" href="/2016/02/02/my-tmux-configuration/">»</a></p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
<footer class="post-meta">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<img class="author-thumb" src="/images/author.jpg" alt="Author image" nopin="nopin" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Antoine Joubert
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<time class="post-date" datetime="2016-02-02T00:00:00+01:00">
|
||||||
|
02 February 2016
|
||||||
|
</time>
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post post">
|
||||||
|
<header class="post-header">
|
||||||
|
<h2 class="post-title"><a href="/2016/01/31/debian-updates-with-ansible/">Debian updates with Ansible</a></h2>
|
||||||
|
</header>
|
||||||
|
<section class="post-excerpt">
|
||||||
|
|
||||||
|
<p>I’ve recently bought a HP Proliant Microserver Gen8 to play around with LXC and try new stuff.
|
||||||
|
From the 4 Debian machines I had to keep up-to-date, I now have 7, so it became quite time-consumming to manually SSH to each of them whenever an update became available. <a class="read-more" href="/2016/01/31/debian-updates-with-ansible/">»</a></p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
<footer class="post-meta">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<img class="author-thumb" src="/images/author.jpg" alt="Author image" nopin="nopin" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Antoine Joubert
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<time class="post-date" datetime="2016-01-31T01:00:00+01:00">
|
||||||
|
31 January 2016
|
||||||
|
</time>
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post post">
|
||||||
|
<header class="post-header">
|
||||||
|
<h2 class="post-title"><a href="/2016/01/31/private-git-repo/">Private Git repo</a></h2>
|
||||||
|
</header>
|
||||||
|
<section class="post-excerpt">
|
||||||
|
|
||||||
|
<p>I’ve decided to migrate this blog to Pelican. I’ve been playing around with it over the week-end, and it turns out to be way easier to manage than Jekyll. Themes are much easier to install and configure, so it ends up looking better as well ! <a class="read-more" href="/2016/01/31/private-git-repo/">»</a></p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
<footer class="post-meta">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<img class="author-thumb" src="/images/author.jpg" alt="Author image" nopin="nopin" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Antoine Joubert
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<time class="post-date" datetime="2016-01-31T00:00:00+01:00">
|
||||||
|
31 January 2016
|
||||||
|
</time>
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post post">
|
||||||
|
<header class="post-header">
|
||||||
|
<h2 class="post-title"><a href="/2015/11/19/installing-ghost/">Installing Ghost</a></h2>
|
||||||
|
</header>
|
||||||
|
<section class="post-excerpt">
|
||||||
|
|
||||||
|
<p>I haven’t published an article on here for over a year and a half… While this was mostly due to a lack of motivation, another reason was that I didn’t enjoy the blogging system I was using. <a class="read-more" href="/2015/11/19/installing-ghost/">»</a></p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
<footer class="post-meta">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<img class="author-thumb" src="/images/author.jpg" alt="Author image" nopin="nopin" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Antoine Joubert
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<time class="post-date" datetime="2015-11-19T00:00:00+01:00">
|
||||||
|
19 November 2015
|
||||||
|
</time>
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post post">
|
||||||
|
<header class="post-header">
|
||||||
|
<h2 class="post-title"><a href="/2015/05/25/flexget-init-script/">Flexget init script</a></h2>
|
||||||
|
</header>
|
||||||
|
<section class="post-excerpt">
|
||||||
|
|
||||||
|
<p>I’ve been using Flexget for the past two years or so as a download automator.
|
||||||
|
Since I wrote an init script for it a while back, and it is compatible with Debian Jessie / systemd, I figured I’d share it here. <a class="read-more" href="/2015/05/25/flexget-init-script/">»</a></p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
<footer class="post-meta">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<img class="author-thumb" src="/images/author.jpg" alt="Author image" nopin="nopin" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Antoine Joubert
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<time class="post-date" datetime="2015-05-25T00:00:00+01:00">
|
||||||
|
25 May 2015
|
||||||
|
</time>
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="pagination" role="navigation">
|
||||||
|
|
||||||
|
<a class="newer-posts" href="/post/">← Newer Posts</a>
|
||||||
|
|
||||||
|
<span class="page-number">Page 2 of 3</span>
|
||||||
|
|
||||||
|
<a class="older-posts" href="/post/page/3/">Older Posts →</a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<center>
|
||||||
|
<a class="fa-icons" href="mailto:contact@captainark.net">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-envelope fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://twitter.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://social.captainark.net/users/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-mastodon-alt fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://github.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.last.fm/user/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-lastfm fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://steamcommunity.com/id/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-steam fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.twitch.tv/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitch fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</center>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="site-footer clearfix">
|
||||||
|
<section class="copyright"><a href="">Sysadmining. All day. Every day.</a> © 2015 - 2019</section>
|
||||||
|
|
||||||
|
<section class="poweredby">Proudly generated by <a class="icon-hugo" href="http://gohugo.io">HUGO</a>, with <a class="icon-theme" href="https://github.com/vjeantet/hugo-theme-casper">Casper</a> theme</section>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript" src="/js/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/jquery.fitvids.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/index.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
342
public/post/page/3/index.html
Normal file
@ -0,0 +1,342 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en-us">
|
||||||
|
<head>
|
||||||
|
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:card" content="summary"/>
|
||||||
|
|
||||||
|
<meta name="twitter:image" content="/images/cover.jpg"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:title" content="Posts"/>
|
||||||
|
<meta name="twitter:description" content="Yet Another Blog about Linux and Networking"/>
|
||||||
|
<meta name="twitter:site" content="@"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:title" content="Posts · Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:site_name" content="Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:url" content="https://www.captainark.net/post/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:image" content="/images/cover.jpg"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:type" content="website" />
|
||||||
|
<meta property="og:description" content="Yet Another Blog about Linux and Networking" />
|
||||||
|
|
||||||
|
|
||||||
|
<title>Posts · Sysadmining. All day. Every day.</title>
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="description" content="Yet Another Blog about Linux and Networking" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="HandheldFriendly" content="True" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="/images/favicon.ico">
|
||||||
|
<link rel="apple-touch-icon" href="/images/apple-touch-icon.png" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/screen.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/nav.css" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/solarized-light.min.css">
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js"></script>
|
||||||
|
|
||||||
|
<script>hljs.initHighlightingOnLoad();</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link href="/index.xml" rel="alternate" type="application/rss+xml" title="Sysadmining. All day. Every day." />
|
||||||
|
|
||||||
|
|
||||||
|
<link href="https://www.captainark.net/post/index.xml" rel="alternate" type="application/rss+xml" title="Posts · Sysadmining. All day. Every day." />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="generator" content="Hugo 0.53" />
|
||||||
|
|
||||||
|
<link rel="canonical" href="https://www.captainark.net/post/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "Website",
|
||||||
|
"publisher": {
|
||||||
|
"@type": "Person",
|
||||||
|
"name": ,
|
||||||
|
|
||||||
|
"image": {
|
||||||
|
"@type": "ImageObject",
|
||||||
|
"url": https://www.captainark.net/images/author.jpg,
|
||||||
|
"width": 250,
|
||||||
|
"height": 250
|
||||||
|
},
|
||||||
|
|
||||||
|
"url": https://www.captainark.net,
|
||||||
|
"sameAs": [
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
],
|
||||||
|
"description": Geek | Gamer | TV Shows Aficionado
|
||||||
|
|
||||||
|
},
|
||||||
|
"url": https://www.captainark.net/,
|
||||||
|
"mainEntityOfPage": {
|
||||||
|
"@type": "WebPage",
|
||||||
|
"@id": https://www.captainark.net/
|
||||||
|
},
|
||||||
|
"description": Yet Another Blog about Linux and Networking
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
(function(f, a, t, h, o, m){
|
||||||
|
a[h]=a[h]||function(){
|
||||||
|
(a[h].q=a[h].q||[]).push(arguments)
|
||||||
|
};
|
||||||
|
o=f.createElement('script'),
|
||||||
|
m=f.getElementsByTagName('script')[0];
|
||||||
|
o.async=1; o.src=t; o.id='fathom-script';
|
||||||
|
m.parentNode.insertBefore(o,m)
|
||||||
|
})(document, window, '//stats.captainark.net/tracker.js', 'fathom');
|
||||||
|
fathom('set', 'siteId', 'GEWGL');
|
||||||
|
fathom('trackPageview');
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.1.5/css/fork-awesome.min.css" integrity="sha256-P64qV9gULPHiZTdrS1nM59toStkgjM0dsf5mK/UwBV4=" crossorigin="anonymous">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body class="nav-closed">
|
||||||
|
|
||||||
|
<div class="nav">
|
||||||
|
<h3 class="nav-title">Menu</h3>
|
||||||
|
<a href="#" class="nav-close">
|
||||||
|
<span class="hidden">Close</span>
|
||||||
|
</a>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h3>This site</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/about">About</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/resume">Resume</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<h3>Other services</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://git.captainark.net">Gitea</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://pics.captainark.net">Chevereto</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://paste.captainark.net">Privatebin</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://chat.captainark.net">Rocket.Chat</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="subscribe-button icon-feed" href="https://www.captainark.net/post/index.xml">Subscribe</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<span class="nav-cover"></span>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="site-wrapper">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<header class="main-header tag-head" style="background-image: url(/images/cover.jpg)">
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="main-nav overlay clearfix">
|
||||||
|
|
||||||
|
<a class="blog-logo" href="https://www.captainark.net/"><img src="/images/logo.png" alt="Home" /></a>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="menu-button" href="#"><span class="burger">☰</span><span class="word">Menu</span></a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
<div class="vertical">
|
||||||
|
<div class="main-header-content inner">
|
||||||
|
<h1 class="page-title">Posts</h1>
|
||||||
|
<h2 class="page-description">
|
||||||
|
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<main class="content" role="main">
|
||||||
|
|
||||||
|
|
||||||
|
<div class="extra-pagination inner">
|
||||||
|
<nav class="pagination" role="navigation">
|
||||||
|
|
||||||
|
<a class="newer-posts" href="/post/page/2/">← Newer Posts</a>
|
||||||
|
|
||||||
|
<span class="page-number">Page 3 of 3</span>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post post">
|
||||||
|
<header class="post-header">
|
||||||
|
<h2 class="post-title"><a href="/2015/04/24/setting-up-a-mail-server/">Setting up a mail server</a></h2>
|
||||||
|
</header>
|
||||||
|
<section class="post-excerpt">
|
||||||
|
|
||||||
|
<p>In this first tutorial, I’ll explain how I’ve configured my mail server using the following :
|
||||||
|
A server running Linux Debian (jessie) ; Postfix ; Postfix-policyd-spf-python ; Dovecot ; Spamassassin ; OpenDKIM ; OpenDMARC ; Monit ; Rainloop. <a class="read-more" href="/2015/04/24/setting-up-a-mail-server/">»</a></p>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
<footer class="post-meta">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<img class="author-thumb" src="/images/author.jpg" alt="Author image" nopin="nopin" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Antoine Joubert
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<time class="post-date" datetime="2015-04-24T00:00:00+01:00">
|
||||||
|
24 April 2015
|
||||||
|
</time>
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="pagination" role="navigation">
|
||||||
|
|
||||||
|
<a class="newer-posts" href="/post/page/2/">← Newer Posts</a>
|
||||||
|
|
||||||
|
<span class="page-number">Page 3 of 3</span>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<center>
|
||||||
|
<a class="fa-icons" href="mailto:contact@captainark.net">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-envelope fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://twitter.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://social.captainark.net/users/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-mastodon-alt fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://github.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.last.fm/user/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-lastfm fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://steamcommunity.com/id/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-steam fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.twitch.tv/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitch fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</center>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="site-footer clearfix">
|
||||||
|
<section class="copyright"><a href="">Sysadmining. All day. Every day.</a> © 2015 - 2019</section>
|
||||||
|
|
||||||
|
<section class="poweredby">Proudly generated by <a class="icon-hugo" href="http://gohugo.io">HUGO</a>, with <a class="icon-theme" href="https://github.com/vjeantet/hugo-theme-casper">Casper</a> theme</section>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript" src="/js/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/jquery.fitvids.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/index.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
515
public/resume/index.html
Normal file
@ -0,0 +1,515 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en-us">
|
||||||
|
<head>
|
||||||
|
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:card" content="summary"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:title" content="Resume"/>
|
||||||
|
<meta name="twitter:description" content=""/>
|
||||||
|
<meta name="twitter:site" content="@"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:title" content="Resume · Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:site_name" content="Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:url" content="https://www.captainark.net/resume/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:image" content="/images/cover.jpg"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:description" content="" />
|
||||||
|
<meta property="og:type" content="article" />
|
||||||
|
<meta property="article:published_time" content="2019-01-06T12:20:53+01:00" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<title>Resume · Sysadmining. All day. Every day.</title>
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="description" content="Profile Hi ! I&rsquo;m Antoine. I&rsquo;m a 31 years old Systems and Network administrator, specialized in Linux and network management. I am not currently look" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="HandheldFriendly" content="True" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="/images/favicon.ico">
|
||||||
|
<link rel="apple-touch-icon" href="/images/apple-touch-icon.png" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/screen.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/nav.css" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/solarized-light.min.css">
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js"></script>
|
||||||
|
|
||||||
|
<script>hljs.initHighlightingOnLoad();</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link href="/index.xml" rel="alternate" type="application/rss+xml" title="Sysadmining. All day. Every day." />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="generator" content="Hugo 0.53" />
|
||||||
|
|
||||||
|
<link rel="canonical" href="https://www.captainark.net/resume/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "Article",
|
||||||
|
"publisher": {
|
||||||
|
"@type": "Organization",
|
||||||
|
"name": ,
|
||||||
|
"logo": https://www.captainark.net/images/logo.png
|
||||||
|
},
|
||||||
|
"author": {
|
||||||
|
"@type": "Person",
|
||||||
|
"name": ,
|
||||||
|
|
||||||
|
"image": {
|
||||||
|
"@type": "ImageObject",
|
||||||
|
"url": https://www.captainark.net/images/author.jpg,
|
||||||
|
"width": 250,
|
||||||
|
"height": 250
|
||||||
|
},
|
||||||
|
|
||||||
|
"url": https://www.captainark.net,
|
||||||
|
"sameAs": [
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
],
|
||||||
|
"description": Geek | Gamer | TV Shows Aficionado
|
||||||
|
|
||||||
|
},
|
||||||
|
"headline": Resume,
|
||||||
|
"name": Resume,
|
||||||
|
"wordCount": 573,
|
||||||
|
"timeRequired": "PT3M",
|
||||||
|
"inLanguage": {
|
||||||
|
"@type": "Language",
|
||||||
|
"alternateName": en
|
||||||
|
},
|
||||||
|
"url": https://www.captainark.net/resume/,
|
||||||
|
"datePublished": 2019-01-06T12:20Z,
|
||||||
|
"dateModified": 2019-01-06T12:20Z,
|
||||||
|
|
||||||
|
|
||||||
|
"description": ,
|
||||||
|
"mainEntityOfPage": {
|
||||||
|
"@type": "WebPage",
|
||||||
|
"@id": https://www.captainark.net/resume/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
(function(f, a, t, h, o, m){
|
||||||
|
a[h]=a[h]||function(){
|
||||||
|
(a[h].q=a[h].q||[]).push(arguments)
|
||||||
|
};
|
||||||
|
o=f.createElement('script'),
|
||||||
|
m=f.getElementsByTagName('script')[0];
|
||||||
|
o.async=1; o.src=t; o.id='fathom-script';
|
||||||
|
m.parentNode.insertBefore(o,m)
|
||||||
|
})(document, window, '//stats.captainark.net/tracker.js', 'fathom');
|
||||||
|
fathom('set', 'siteId', 'GEWGL');
|
||||||
|
fathom('trackPageview');
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.1.5/css/fork-awesome.min.css" integrity="sha256-P64qV9gULPHiZTdrS1nM59toStkgjM0dsf5mK/UwBV4=" crossorigin="anonymous">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body class="nav-closed">
|
||||||
|
|
||||||
|
<div class="nav">
|
||||||
|
<h3 class="nav-title">Menu</h3>
|
||||||
|
<a href="#" class="nav-close">
|
||||||
|
<span class="hidden">Close</span>
|
||||||
|
</a>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h3>This site</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/about">About</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/resume">Resume</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<h3>Other services</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://git.captainark.net">Gitea</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://pics.captainark.net">Chevereto</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://paste.captainark.net">Privatebin</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://chat.captainark.net">Rocket.Chat</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="subscribe-button icon-feed" href="/index.xml">Subscribe</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<span class="nav-cover"></span>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="site-wrapper">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<header class="main-header post-head no-cover">
|
||||||
|
<nav class="main-nav overlay clearfix">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a class="blog-logo" href="https://www.captainark.net/"><img src="/images/logo.png" alt="Home" /></a>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="menu-button" href="#"><span class="burger">☰</span><span class="word">Menu</span></a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<main class="content" role="main">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post ">
|
||||||
|
<header class="post-header">
|
||||||
|
<nav class="breadcrumb">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
|
||||||
|
<h1 class="post-title">Resume</h1>
|
||||||
|
<small></small>
|
||||||
|
|
||||||
|
<section class="post-meta">
|
||||||
|
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<section class="post-content">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h2 id="profile">Profile</h2>
|
||||||
|
|
||||||
|
<p>Hi ! I’m Antoine. I’m a 31 years old Systems and Network administrator, specialized in Linux and network management. I am not currently looking for a new opportunity.</p>
|
||||||
|
|
||||||
|
<p>If you find my profile interesting or if you have any questions, please <a href="mailto:contact@captainark.net">send me an email</a> !</p>
|
||||||
|
|
||||||
|
<h2 id="skills-summary">Skills Summary</h2>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Expertise in Linux and Cisco IOS routing, firewalling, QoS and VLAN configuration, for IPv4 and IPv6 ;</li>
|
||||||
|
<li>Knowledge of dynamic routing protocols (BGP, OSPF, EIGRP) and VPN software (OpenVPN) ;</li>
|
||||||
|
<li>Experience with a DDOS mitigation system (Arbor TMS) ;</li>
|
||||||
|
<li>Expertise in standard network and systems analyzing and troubleshooting tools (tcpdump, dig, atop, wireshark, traceroute) ;</li>
|
||||||
|
<li>Knowledge of monitoring software (nagios, shinken, cacti, smokeping, observium, ELK) ;</li>
|
||||||
|
<li>Experience with Linux servers and desktops installation, configuration, administration and troubleshooting (on both Debian and RedHat based distributions) ;</li>
|
||||||
|
<li>Familiarity with the most common network protocols (HTTP, DNS, DHCP, SMTP, POP, IMAP, CIFS) and their associated daemons (nginx, apache, bind, powerdns, dhcpd, dnsmasq, postfix, dovecot, samba) ;</li>
|
||||||
|
<li>Ability to write and debug bash, batch and powershell scripts ;</li>
|
||||||
|
<li>Experience with clustering and high-availability technologies (heartbeat, ipvsadm, VRRP, HSRP, SLB) ;</li>
|
||||||
|
<li>Knowledge of virtualization technologies (VMWare Workstation, KVM, Xen, Proxmox, LXC) ;</li>
|
||||||
|
<li>Experience with information resources management and incident management software (GLPI, OCS Inventory, FusionInventory) ;</li>
|
||||||
|
<li>Familiarity with Windows desktop (8, 7 and XP) and server (2012, 2008, 2003) families, and with Mac OS X.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2 id="work-experience">Work Experience</h2>
|
||||||
|
|
||||||
|
<p><strong>NAMESHIELD (Angers, France)</strong></p>
|
||||||
|
|
||||||
|
<p><em>Network Architect, from 09/2015 to now</em></p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Technical projects management :
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>WiFi deployment, using Cisco WLC and Aironet devices as well as Freeradius for EAP-TLS/802.1x user authentication ;</li>
|
||||||
|
<li>VLAN deployment ;</li>
|
||||||
|
<li>L2 VPN setup using OpenVPN to securely propagate private VLANs over the internet ;</li>
|
||||||
|
</ul></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p><em>Systems and Network Administrator, from <sup>10</sup>⁄<sub>2013</sub> to 08/2015</em></p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Technical projects management, notably :
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Definition, configuration and maintenance of a highly-available networking architecture for WAN, site-to-site and road warrior VPN access ;</li>
|
||||||
|
<li>Setup of a DDOS mitigation system and its associated procedures ;</li>
|
||||||
|
<li>IPv6 deployment, on both LAN and data-center hosted machines ;</li>
|
||||||
|
<li>Setup of a centralized logging solution and its associated scripts to generate statistics ;</li>
|
||||||
|
</ul></li>
|
||||||
|
<li>Linux systems, VOIP Phones, Cisco switches and routers configuration, deployment, administration and troubleshooting ;</li>
|
||||||
|
<li>Daily monitoring and production control, and incident management ;</li>
|
||||||
|
<li>User support on Linux and Windows systems.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p><strong>INIT SYS - Alphalink Group (Pornic, France)</strong></p>
|
||||||
|
|
||||||
|
<p><em>Systems and Network Administration Technician, from <sup>10</sup>⁄<sub>2012</sub> to 08/2013</em></p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Linux systems and services installation and configuration, on both physical and virtual machines ;</li>
|
||||||
|
<li>Documentation of newly installed systems and their role within the existing infrastructure ;</li>
|
||||||
|
<li>Servers and network monitoring and optimisation ;</li>
|
||||||
|
<li>Systems and network maintenance operations during closed business hours ;</li>
|
||||||
|
<li>Automation of redundant tasks through scripting ;</li>
|
||||||
|
<li>Level 3 customer and internal support ;</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p><em>Technical Support Engineer, from 02/2012 to <sup>10</sup>⁄<sub>2012</sub></em></p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Level 1 customer support for both French and international customers and suppliers over the telephone and by e-mail ;</li>
|
||||||
|
<li>Troubleshooting customers and internal users networking and system issues using standard tools and, when needed, through research and reproduction ;</li>
|
||||||
|
<li>Contacting and following up with the appropriate internal services when needed to solve the issue.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<p><strong>CHALLANS City Hall (Challans, France)</strong></p>
|
||||||
|
|
||||||
|
<p><em>Internship, from 09/2011 to <sup>11</sup>⁄<sub>2011</sub></em></p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Installation and configuration of a highly-available front-end reverse proxy ;</li>
|
||||||
|
<li>Documentation of the installation and configuration process ;</li>
|
||||||
|
<li>Level 1 user support.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2 id="education">Education</h2>
|
||||||
|
|
||||||
|
<p><strong>Technical Support Engineer - Six months training course</strong></p>
|
||||||
|
|
||||||
|
<p><em>IMIE, Rezé (France) from 02/2011 to 09/2011</em></p>
|
||||||
|
|
||||||
|
<p><strong>Bachelor Graduate in French Civil Law</strong></p>
|
||||||
|
|
||||||
|
<p><em>Universities of Nantes and Poitiers (France) from 2006 to 2010</em></p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="post-footer">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<figure class="author-image">
|
||||||
|
<a class="img" href="https://www.captainark.net/" style="background-image: url(/images/author.jpg)"><span class="hidden">Antoine Joubert's Picture</span></a>
|
||||||
|
</figure>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<figure class="author-image">
|
||||||
|
<a class="img" href="https://www.captainark.net/" style="background-image: url(/images/author.jpg)"><span class="hidden">Antoine Joubert's Picture</span></a>
|
||||||
|
</figure>
|
||||||
|
|
||||||
|
|
||||||
|
<section class="author">
|
||||||
|
<h4><a href="https://www.captainark.net/">Antoine Joubert</a></h4>
|
||||||
|
|
||||||
|
<p>Geek | Gamer | TV Shows Aficionado</p>
|
||||||
|
|
||||||
|
<div class="author-meta">
|
||||||
|
<span class="author-location icon-location">Angers, France</span>
|
||||||
|
<span class="author-link icon-link"><a href="https://www.captainark.net">https://www.captainark.net</a></span>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- isso -->
|
||||||
|
<script data-isso="https://www.captainark.net/comments/" src="https://www.captainark.net/comments/js/embed.min.js"></script>
|
||||||
|
<noscript>Please enable JavaScript to view comments</noscript>
|
||||||
|
<section id="isso-thread"></section>
|
||||||
|
<!-- end isso -->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
<aside class="read-next">
|
||||||
|
|
||||||
|
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<center>
|
||||||
|
<a class="fa-icons" href="mailto:contact@captainark.net">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-envelope fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://twitter.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://social.captainark.net/users/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-mastodon-alt fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://github.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.last.fm/user/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-lastfm fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://steamcommunity.com/id/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-steam fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.twitch.tv/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitch fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</center>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="site-footer clearfix">
|
||||||
|
<section class="copyright"><a href="">Sysadmining. All day. Every day.</a> © 2015 - 2019</section>
|
||||||
|
|
||||||
|
<section class="poweredby">Proudly generated by <a class="icon-hugo" href="http://gohugo.io">HUGO</a>, with <a class="icon-theme" href="https://github.com/vjeantet/hugo-theme-casper">Casper</a> theme</section>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript" src="/js/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/jquery.fitvids.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/index.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
92
public/sitemap.xml
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||||
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
|
||||||
|
xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://www.captainark.net/resume/</loc>
|
||||||
|
<lastmod>2019-01-06T12:20:53+01:00</lastmod>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://www.captainark.net/about/</loc>
|
||||||
|
<lastmod>2019-01-06T12:20:50+01:00</lastmod>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://www.captainark.net/2018/12/03/debian-repos-over-https/</loc>
|
||||||
|
<lastmod>2018-12-03T00:00:00+01:00</lastmod>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://www.captainark.net/2018/11/27/self-hosted-report-uri/</loc>
|
||||||
|
<lastmod>2018-11-27T00:00:00+01:00</lastmod>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://www.captainark.net/2018/04/14/dns-zone-versioning/</loc>
|
||||||
|
<lastmod>2018-04-14T00:00:00+01:00</lastmod>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://www.captainark.net/2016/03/26/webdav-with-nginx/</loc>
|
||||||
|
<lastmod>2016-03-26T00:00:00+01:00</lastmod>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://www.captainark.net/2016/03/13/mysql-backup-script/</loc>
|
||||||
|
<lastmod>2016-03-13T00:00:00+01:00</lastmod>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://www.captainark.net/2016/02/02/my-tmux-configuration/</loc>
|
||||||
|
<lastmod>2016-02-02T00:00:00+01:00</lastmod>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://www.captainark.net/2016/01/31/debian-updates-with-ansible/</loc>
|
||||||
|
<lastmod>2016-01-31T01:00:00+01:00</lastmod>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://www.captainark.net/2016/01/31/private-git-repo/</loc>
|
||||||
|
<lastmod>2016-01-31T00:00:00+01:00</lastmod>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://www.captainark.net/2015/11/19/installing-ghost/</loc>
|
||||||
|
<lastmod>2015-11-19T00:00:00+01:00</lastmod>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://www.captainark.net/2015/05/25/flexget-init-script/</loc>
|
||||||
|
<lastmod>2015-05-25T00:00:00+01:00</lastmod>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://www.captainark.net/2015/04/24/setting-up-a-mail-server/</loc>
|
||||||
|
<lastmod>2015-04-24T00:00:00+01:00</lastmod>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://www.captainark.net/categories/</loc>
|
||||||
|
<priority>0</priority>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://www.captainark.net/post/</loc>
|
||||||
|
<lastmod>2018-12-03T00:00:00+01:00</lastmod>
|
||||||
|
<priority>0</priority>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://www.captainark.net/</loc>
|
||||||
|
<lastmod>2019-01-06T12:20:53+01:00</lastmod>
|
||||||
|
<priority>0</priority>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
<url>
|
||||||
|
<loc>https://www.captainark.net/tags/</loc>
|
||||||
|
<priority>0</priority>
|
||||||
|
</url>
|
||||||
|
|
||||||
|
</urlset>
|
304
public/tags/index.html
Normal file
@ -0,0 +1,304 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en-us">
|
||||||
|
<head>
|
||||||
|
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:card" content="summary"/>
|
||||||
|
|
||||||
|
<meta name="twitter:image" content="/images/cover.jpg"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="twitter:title" content="Tags"/>
|
||||||
|
<meta name="twitter:description" content="Yet Another Blog about Linux and Networking"/>
|
||||||
|
<meta name="twitter:site" content="@"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:title" content="Tags · Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:site_name" content="Sysadmining. All day. Every day." />
|
||||||
|
<meta property="og:url" content="https://www.captainark.net/tags/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:image" content="/images/cover.jpg"/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta property="og:type" content="website" />
|
||||||
|
<meta property="og:description" content="Yet Another Blog about Linux and Networking" />
|
||||||
|
|
||||||
|
|
||||||
|
<title>Tags · Sysadmining. All day. Every day.</title>
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="description" content="Yet Another Blog about Linux and Networking" />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="HandheldFriendly" content="True" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="/images/favicon.ico">
|
||||||
|
<link rel="apple-touch-icon" href="/images/apple-touch-icon.png" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/screen.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="/css/nav.css" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/styles/solarized-light.min.css">
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/highlight.min.js"></script>
|
||||||
|
|
||||||
|
<script>hljs.initHighlightingOnLoad();</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link href="/index.xml" rel="alternate" type="application/rss+xml" title="Sysadmining. All day. Every day." />
|
||||||
|
|
||||||
|
|
||||||
|
<link href="https://www.captainark.net/tags/index.xml" rel="alternate" type="application/rss+xml" title="Tags · Sysadmining. All day. Every day." />
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="generator" content="Hugo 0.53" />
|
||||||
|
|
||||||
|
<link rel="canonical" href="https://www.captainark.net/tags/" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script type="application/ld+json">
|
||||||
|
{
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "Website",
|
||||||
|
"publisher": {
|
||||||
|
"@type": "Person",
|
||||||
|
"name": ,
|
||||||
|
|
||||||
|
"image": {
|
||||||
|
"@type": "ImageObject",
|
||||||
|
"url": https://www.captainark.net/images/author.jpg,
|
||||||
|
"width": 250,
|
||||||
|
"height": 250
|
||||||
|
},
|
||||||
|
|
||||||
|
"url": https://www.captainark.net,
|
||||||
|
"sameAs": [
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
],
|
||||||
|
"description": Geek | Gamer | TV Shows Aficionado
|
||||||
|
|
||||||
|
},
|
||||||
|
"url": https://www.captainark.net/,
|
||||||
|
"mainEntityOfPage": {
|
||||||
|
"@type": "WebPage",
|
||||||
|
"@id": https://www.captainark.net/
|
||||||
|
},
|
||||||
|
"description": Yet Another Blog about Linux and Networking
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
(function(f, a, t, h, o, m){
|
||||||
|
a[h]=a[h]||function(){
|
||||||
|
(a[h].q=a[h].q||[]).push(arguments)
|
||||||
|
};
|
||||||
|
o=f.createElement('script'),
|
||||||
|
m=f.getElementsByTagName('script')[0];
|
||||||
|
o.async=1; o.src=t; o.id='fathom-script';
|
||||||
|
m.parentNode.insertBefore(o,m)
|
||||||
|
})(document, window, '//stats.captainark.net/tracker.js', 'fathom');
|
||||||
|
fathom('set', 'siteId', 'GEWGL');
|
||||||
|
fathom('trackPageview');
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.1.5/css/fork-awesome.min.css" integrity="sha256-P64qV9gULPHiZTdrS1nM59toStkgjM0dsf5mK/UwBV4=" crossorigin="anonymous">
|
||||||
|
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body class="nav-closed">
|
||||||
|
|
||||||
|
<div class="nav">
|
||||||
|
<h3 class="nav-title">Menu</h3>
|
||||||
|
<a href="#" class="nav-close">
|
||||||
|
<span class="hidden">Close</span>
|
||||||
|
</a>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h3>This site</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/">Home</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/about">About</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="/resume">Resume</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<h3>Other services</h3>
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://git.captainark.net">Gitea</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://pics.captainark.net">Chevereto</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://paste.captainark.net">Privatebin</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
<li class="nav-opened" role="presentation">
|
||||||
|
<a href="https://chat.captainark.net">Rocket.Chat</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="subscribe-button icon-feed" href="https://www.captainark.net/tags/index.xml">Subscribe</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<span class="nav-cover"></span>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="site-wrapper">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<header class="main-header tag-head" style="background-image: url(/images/cover.jpg)">
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="main-nav overlay clearfix">
|
||||||
|
|
||||||
|
<a class="blog-logo" href="https://www.captainark.net/"><img src="/images/logo.png" alt="Home" /></a>
|
||||||
|
|
||||||
|
|
||||||
|
<a class="menu-button" href="#"><span class="burger">☰</span><span class="word">Menu</span></a>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
<div class="vertical">
|
||||||
|
<div class="main-header-content inner">
|
||||||
|
<h1 class="page-title">Tags</h1>
|
||||||
|
<h2 class="page-description">
|
||||||
|
|
||||||
|
</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<main class="content" role="main">
|
||||||
|
|
||||||
|
|
||||||
|
<div class="extra-pagination inner">
|
||||||
|
<nav class="pagination" role="navigation">
|
||||||
|
|
||||||
|
<span class="page-number">Page 1 of 0</span>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<nav class="pagination" role="navigation">
|
||||||
|
|
||||||
|
<span class="page-number">Page 1 of 0</span>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
</main>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<center>
|
||||||
|
<a class="fa-icons" href="mailto:contact@captainark.net">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-envelope fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://twitter.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://social.captainark.net/users/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-mastodon-alt fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://github.com/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.last.fm/user/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-lastfm fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://steamcommunity.com/id/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-steam fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<a class="fa-icons" href="https://www.twitch.tv/captainark">
|
||||||
|
<span class="fa-stack fa-lg">
|
||||||
|
<i class="fa fa-circle fa-stack-2x"></i>
|
||||||
|
<i class="fa fa-twitch fa-stack-1x fa-inverse"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</center>
|
||||||
|
|
||||||
|
|
||||||
|
<footer class="site-footer clearfix">
|
||||||
|
<section class="copyright"><a href="">Sysadmining. All day. Every day.</a> © 2015 - 2019</section>
|
||||||
|
|
||||||
|
<section class="poweredby">Proudly generated by <a class="icon-hugo" href="http://gohugo.io">HUGO</a>, with <a class="icon-theme" href="https://github.com/vjeantet/hugo-theme-casper">Casper</a> theme</section>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript" src="/js/jquery.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/jquery.fitvids.js"></script>
|
||||||
|
<script type="text/javascript" src="/js/index.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
15
public/tags/index.xml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||||
|
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||||
|
<channel>
|
||||||
|
<title>Tags on Sysadmining. All day. Every day.</title>
|
||||||
|
<link>https://www.captainark.net/tags/</link>
|
||||||
|
<description>Recent content in Tags on Sysadmining. All day. Every day.</description>
|
||||||
|
<generator>Hugo -- gohugo.io</generator>
|
||||||
|
<language>en-us</language>
|
||||||
|
<copyright>© 2015 - 2019</copyright>
|
||||||
|
|
||||||
|
<atom:link href="https://www.captainark.net/tags/index.xml" rel="self" type="application/rss+xml" />
|
||||||
|
|
||||||
|
|
||||||
|
</channel>
|
||||||
|
</rss>
|
1
public/tags/page/1/index.html
Normal file
@ -0,0 +1 @@
|
|||||||
|
<!DOCTYPE html><html><head><title>https://www.captainark.net/tags/</title><link rel="canonical" href="https://www.captainark.net/tags/"/><meta name="robots" content="noindex"><meta charset="utf-8" /><meta http-equiv="refresh" content="0; url=https://www.captainark.net/tags/" /></head></html>
|