migrating from google analytics to piwik

This commit is contained in:
CaptainArk 2017-11-11 12:36:45 +01:00
parent 544fb3e9a2
commit 233fe8916f
50 changed files with 535 additions and 782 deletions

View File

@ -25,7 +25,7 @@ If you find my profile interesting or if you have any questions, please [send me
**NAMESHIELD (Angers, France)**
*Network Architect, from 09/2013 to now*
*Network Architect, from 09/2015 to now*
- Technical projects management :
* WiFi deployment, using Cisco WLC and Aironet devices as well as Freeradius for EAP-TLS/802.1x user authentication ;

View File

@ -21,7 +21,7 @@
<!-- Custom Fonts -->
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href='https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
@ -172,14 +172,14 @@
</ul>
<p class="copyright text-muted">
Blog powered by <a href="http://getpelican.com">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.
which takes great advantage of <a href="http://python.org">Python</a>. <br /> &copy; Antoine Joubert
</p> </div>
</div>
</div>
</footer>
<!-- jQuery -->
<script src="https://captainark.net/theme/js/jquery.js"></script>
<script src="https://captainark.net/theme/js/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="https://captainark.net/theme/js/bootstrap.min.js"></script>
@ -188,13 +188,16 @@
<script src="https://captainark.net/theme/js/clean-blog.min.js"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-53658366-1']);
_gaq.push(['_trackPageview']);
var pkBaseURL = "https://nibelungvalesti.net/stats";
var _paq = _paq || [];
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
var u=(("https:" == document.location.protocol) ? "https" : "http")+"://"+pkBaseURL+"/";
_paq.push(["setTrackerUrl", u+"piwik.php"]);
_paq.push(["setSiteId", "1"]);
var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
})();
</script>
<script type="text/javascript">

View File

@ -21,7 +21,7 @@
<!-- Custom Fonts -->
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href='https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
@ -102,105 +102,113 @@
WebDAV with nginx
</h2>
</a>
<p class="article-summary">
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...
</p>
<p class="post-meta">Posted by
<a href="https://captainark.net/author/antoine-joubert.html">Antoine Joubert</a>
on Sat 26 March 2016
</p>
<p>There are <a href="https://captainark.net/webdav-with-nginx.html#disqus_thread">comments</a>.</p> </div>
<p>There are <a data-disqus-identifier="webdav-with-nginx.html" href="https://captainark.net/webdav-with-nginx.html#disqus_thread">comments</a>.</p> </div>
<div class="post-preview">
<a href="https://captainark.net/mysql-backup-script.html" rel="bookmark" title="Permalink to MySQL backup script">
<h2 class="post-title">
MySQL backup script
</h2>
</a>
<p class="article-summary">
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...
</p>
<p class="post-meta">Posted by
<a href="https://captainark.net/author/antoine-joubert.html">Antoine Joubert</a>
on Sun 13 March 2016
</p>
<p>There are <a href="https://captainark.net/mysql-backup-script.html#disqus_thread">comments</a>.</p> </div>
<p>There are <a data-disqus-identifier="mysql-backup-script.html" href="https://captainark.net/mysql-backup-script.html#disqus_thread">comments</a>.</p> </div>
<div class="post-preview">
<a href="https://captainark.net/postfix-admin.html" rel="bookmark" title="Permalink to Postfix Admin">
<h2 class="post-title">
Postfix Admin
</h2>
</a>
<p class="article-summary">
As I explained in this previous tutorial, I've been running my own mail server without any issue for some time now. However, every time...
</p>
<p class="post-meta">Posted by
<a href="https://captainark.net/author/antoine-joubert.html">Antoine Joubert</a>
on Sun 06 March 2016
</p>
<p>There are <a href="https://captainark.net/postfix-admin.html#disqus_thread">comments</a>.</p> </div>
<p>There are <a data-disqus-identifier="postfix-admin.html" href="https://captainark.net/postfix-admin.html#disqus_thread">comments</a>.</p> </div>
<div class="post-preview">
<a href="https://captainark.net/my-tmux-configuration.html" rel="bookmark" title="Permalink to My tmux configuration">
<h2 class="post-title">
My tmux configuration
</h2>
</a>
<p class="article-summary">
tmux is a terminal mutiplexer. It lets you have multiples shells running in a single terminal emulator window and it keeps those shells...
</p>
<p class="post-meta">Posted by
<a href="https://captainark.net/author/antoine-joubert.html">Antoine Joubert</a>
on Tue 02 February 2016
</p>
<p>There are <a href="https://captainark.net/my-tmux-configuration.html#disqus_thread">comments</a>.</p> </div>
<p>There are <a data-disqus-identifier="my-tmux-configuration.html" href="https://captainark.net/my-tmux-configuration.html#disqus_thread">comments</a>.</p> </div>
<div class="post-preview">
<a href="https://captainark.net/debian-updates-with-ansible.html" rel="bookmark" title="Permalink to Debian updates with Ansible">
<h2 class="post-title">
Debian updates with Ansible
</h2>
</a>
<p class="article-summary">
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...
</p>
<p class="post-meta">Posted by
<a href="https://captainark.net/author/antoine-joubert.html">Antoine Joubert</a>
on Sun 31 January 2016
</p>
<p>There are <a href="https://captainark.net/debian-updates-with-ansible.html#disqus_thread">comments</a>.</p> </div>
<p>There are <a data-disqus-identifier="debian-updates-with-ansible.html" href="https://captainark.net/debian-updates-with-ansible.html#disqus_thread">comments</a>.</p> </div>
<div class="post-preview">
<a href="https://captainark.net/private-git-repo.html" rel="bookmark" title="Permalink to Private Git Repo">
<h2 class="post-title">
Private Git Repo
</h2>
</a>
<p class="article-summary">
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...
</p>
<p class="post-meta">Posted by
<a href="https://captainark.net/author/antoine-joubert.html">Antoine Joubert</a>
on Sun 31 January 2016
</p>
<p>There are <a href="https://captainark.net/private-git-repo.html#disqus_thread">comments</a>.</p> </div>
<p>There are <a data-disqus-identifier="private-git-repo.html" href="https://captainark.net/private-git-repo.html#disqus_thread">comments</a>.</p> </div>
<div class="post-preview">
<a href="https://captainark.net/flexget-init-script.html" rel="bookmark" title="Permalink to Flexget init script">
<h2 class="post-title">
Flexget init script
</h2>
</a>
<p class="article-summary">
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...
</p>
<p class="post-meta">Posted by
<a href="https://captainark.net/author/antoine-joubert.html">Antoine Joubert</a>
on Tue 05 May 2015
</p>
<p>There are <a href="https://captainark.net/flexget-init-script.html#disqus_thread">comments</a>.</p> </div>
<p>There are <a data-disqus-identifier="flexget-init-script.html" href="https://captainark.net/flexget-init-script.html#disqus_thread">comments</a>.</p> </div>
<div class="post-preview">
<a href="https://captainark.net/setting-up-a-mail-server.html" rel="bookmark" title="Permalink to Setting up a mail server">
<h2 class="post-title">
Setting up a mail server
</h2>
</a>
<p class="article-summary">
In this first tutorial, I'll explain how I've configured my mail server using the following : A server running Linux Debian (jessie) ;...
</p>
<p class="post-meta">Posted by
<a href="https://captainark.net/author/antoine-joubert.html">Antoine Joubert</a>
on Fri 24 April 2015
</p>
<p>There are <a href="https://captainark.net/setting-up-a-mail-server.html#disqus_thread">comments</a>.</p> </div>
<p>There are <a data-disqus-identifier="setting-up-a-mail-server.html" href="https://captainark.net/setting-up-a-mail-server.html#disqus_thread">comments</a>.</p> </div>
<hr>
<!-- Pager -->
<ul class="pager">
<li class="next">
</li>
</ul>
Page 1 / 1
<hr>
</div>
</div>
</div>
@ -264,14 +272,14 @@
</ul>
<p class="copyright text-muted">
Blog powered by <a href="http://getpelican.com">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.
which takes great advantage of <a href="http://python.org">Python</a>. <br /> &copy; Antoine Joubert
</p> </div>
</div>
</div>
</footer>
<!-- jQuery -->
<script src="https://captainark.net/theme/js/jquery.js"></script>
<script src="https://captainark.net/theme/js/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="https://captainark.net/theme/js/bootstrap.min.js"></script>
@ -280,13 +288,16 @@
<script src="https://captainark.net/theme/js/clean-blog.min.js"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-53658366-1']);
_gaq.push(['_trackPageview']);
var pkBaseURL = "https://nibelungvalesti.net/stats";
var _paq = _paq || [];
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
var u=(("https:" == document.location.protocol) ? "https" : "http")+"://"+pkBaseURL+"/";
_paq.push(["setTrackerUrl", u+"piwik.php"]);
_paq.push(["setSiteId", "1"]);
var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
})();
</script>
<script type="text/javascript">

View File

@ -21,7 +21,7 @@
<!-- Custom Fonts -->
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href='https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
@ -161,14 +161,14 @@
</ul>
<p class="copyright text-muted">
Blog powered by <a href="http://getpelican.com">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.
which takes great advantage of <a href="http://python.org">Python</a>. <br /> &copy; Antoine Joubert
</p> </div>
</div>
</div>
</footer>
<!-- jQuery -->
<script src="https://captainark.net/theme/js/jquery.js"></script>
<script src="https://captainark.net/theme/js/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="https://captainark.net/theme/js/bootstrap.min.js"></script>
@ -177,13 +177,16 @@
<script src="https://captainark.net/theme/js/clean-blog.min.js"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-53658366-1']);
_gaq.push(['_trackPageview']);
var pkBaseURL = "https://nibelungvalesti.net/stats";
var _paq = _paq || [];
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
var u=(("https:" == document.location.protocol) ? "https" : "http")+"://"+pkBaseURL+"/";
_paq.push(["setTrackerUrl", u+"piwik.php"]);
_paq.push(["setSiteId", "1"]);
var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
})();
</script>
<script type="text/javascript">

View File

@ -21,7 +21,7 @@
<!-- Custom Fonts -->
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href='https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
@ -159,14 +159,14 @@
</ul>
<p class="copyright text-muted">
Blog powered by <a href="http://getpelican.com">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.
which takes great advantage of <a href="http://python.org">Python</a>. <br /> &copy; Antoine Joubert
</p> </div>
</div>
</div>
</footer>
<!-- jQuery -->
<script src="https://captainark.net/theme/js/jquery.js"></script>
<script src="https://captainark.net/theme/js/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="https://captainark.net/theme/js/bootstrap.min.js"></script>
@ -175,13 +175,16 @@
<script src="https://captainark.net/theme/js/clean-blog.min.js"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-53658366-1']);
_gaq.push(['_trackPageview']);
var pkBaseURL = "https://nibelungvalesti.net/stats";
var _paq = _paq || [];
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
var u=(("https:" == document.location.protocol) ? "https" : "http")+"://"+pkBaseURL+"/";
_paq.push(["setTrackerUrl", u+"piwik.php"]);
_paq.push(["setSiteId", "1"]);
var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
})();
</script>
<script type="text/javascript">

View File

@ -21,7 +21,7 @@
<!-- Custom Fonts -->
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href='https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
@ -96,21 +96,15 @@
Debian updates with Ansible
</h2>
</a>
<p class="article-summary">
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...
</p>
<p class="post-meta">Posted by
<a href="https://captainark.net/author/antoine-joubert.html">Antoine Joubert</a>
on Sun 31 January 2016
</p>
<p>There are <a href="https://captainark.net/debian-updates-with-ansible.html#disqus_thread">comments</a>.</p> </div>
<p>There are <a data-disqus-identifier="debian-updates-with-ansible.html" href="https://captainark.net/debian-updates-with-ansible.html#disqus_thread">comments</a>.</p> </div>
<hr>
<!-- Pager -->
<ul class="pager">
<li class="next">
</li>
</ul>
Page 1 / 1
<hr>
</div>
</div>
</div>
@ -174,14 +168,14 @@
</ul>
<p class="copyright text-muted">
Blog powered by <a href="http://getpelican.com">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.
which takes great advantage of <a href="http://python.org">Python</a>. <br /> &copy; Antoine Joubert
</p> </div>
</div>
</div>
</footer>
<!-- jQuery -->
<script src="https://captainark.net/theme/js/jquery.js"></script>
<script src="https://captainark.net/theme/js/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="https://captainark.net/theme/js/bootstrap.min.js"></script>
@ -190,13 +184,16 @@
<script src="https://captainark.net/theme/js/clean-blog.min.js"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-53658366-1']);
_gaq.push(['_trackPageview']);
var pkBaseURL = "https://nibelungvalesti.net/stats";
var _paq = _paq || [];
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
var u=(("https:" == document.location.protocol) ? "https" : "http")+"://"+pkBaseURL+"/";
_paq.push(["setTrackerUrl", u+"piwik.php"]);
_paq.push(["setSiteId", "1"]);
var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
})();
</script>
<script type="text/javascript">

View File

@ -21,7 +21,7 @@
<!-- Custom Fonts -->
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href='https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
@ -96,21 +96,15 @@
My tmux configuration
</h2>
</a>
<p class="article-summary">
tmux is a terminal mutiplexer. It lets you have multiples shells running in a single terminal emulator window and it keeps those shells...
</p>
<p class="post-meta">Posted by
<a href="https://captainark.net/author/antoine-joubert.html">Antoine Joubert</a>
on Tue 02 February 2016
</p>
<p>There are <a href="https://captainark.net/my-tmux-configuration.html#disqus_thread">comments</a>.</p> </div>
<p>There are <a data-disqus-identifier="my-tmux-configuration.html" href="https://captainark.net/my-tmux-configuration.html#disqus_thread">comments</a>.</p> </div>
<hr>
<!-- Pager -->
<ul class="pager">
<li class="next">
</li>
</ul>
Page 1 / 1
<hr>
</div>
</div>
</div>
@ -174,14 +168,14 @@
</ul>
<p class="copyright text-muted">
Blog powered by <a href="http://getpelican.com">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.
which takes great advantage of <a href="http://python.org">Python</a>. <br /> &copy; Antoine Joubert
</p> </div>
</div>
</div>
</footer>
<!-- jQuery -->
<script src="https://captainark.net/theme/js/jquery.js"></script>
<script src="https://captainark.net/theme/js/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="https://captainark.net/theme/js/bootstrap.min.js"></script>
@ -190,13 +184,16 @@
<script src="https://captainark.net/theme/js/clean-blog.min.js"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-53658366-1']);
_gaq.push(['_trackPageview']);
var pkBaseURL = "https://nibelungvalesti.net/stats";
var _paq = _paq || [];
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
var u=(("https:" == document.location.protocol) ? "https" : "http")+"://"+pkBaseURL+"/";
_paq.push(["setTrackerUrl", u+"piwik.php"]);
_paq.push(["setSiteId", "1"]);
var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
})();
</script>
<script type="text/javascript">

View File

@ -21,7 +21,7 @@
<!-- Custom Fonts -->
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href='https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
@ -96,33 +96,29 @@
MySQL backup script
</h2>
</a>
<p class="article-summary">
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...
</p>
<p class="post-meta">Posted by
<a href="https://captainark.net/author/antoine-joubert.html">Antoine Joubert</a>
on Sun 13 March 2016
</p>
<p>There are <a href="https://captainark.net/mysql-backup-script.html#disqus_thread">comments</a>.</p> </div>
<p>There are <a data-disqus-identifier="mysql-backup-script.html" href="https://captainark.net/mysql-backup-script.html#disqus_thread">comments</a>.</p> </div>
<div class="post-preview">
<a href="https://captainark.net/flexget-init-script.html" rel="bookmark" title="Permalink to Flexget init script">
<h2 class="post-title">
Flexget init script
</h2>
</a>
<p class="article-summary">
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...
</p>
<p class="post-meta">Posted by
<a href="https://captainark.net/author/antoine-joubert.html">Antoine Joubert</a>
on Tue 05 May 2015
</p>
<p>There are <a href="https://captainark.net/flexget-init-script.html#disqus_thread">comments</a>.</p> </div>
<p>There are <a data-disqus-identifier="flexget-init-script.html" href="https://captainark.net/flexget-init-script.html#disqus_thread">comments</a>.</p> </div>
<hr>
<!-- Pager -->
<ul class="pager">
<li class="next">
</li>
</ul>
Page 1 / 1
<hr>
</div>
</div>
</div>
@ -186,14 +182,14 @@
</ul>
<p class="copyright text-muted">
Blog powered by <a href="http://getpelican.com">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.
which takes great advantage of <a href="http://python.org">Python</a>. <br /> &copy; Antoine Joubert
</p> </div>
</div>
</div>
</footer>
<!-- jQuery -->
<script src="https://captainark.net/theme/js/jquery.js"></script>
<script src="https://captainark.net/theme/js/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="https://captainark.net/theme/js/bootstrap.min.js"></script>
@ -202,13 +198,16 @@
<script src="https://captainark.net/theme/js/clean-blog.min.js"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-53658366-1']);
_gaq.push(['_trackPageview']);
var pkBaseURL = "https://nibelungvalesti.net/stats";
var _paq = _paq || [];
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
var u=(("https:" == document.location.protocol) ? "https" : "http")+"://"+pkBaseURL+"/";
_paq.push(["setTrackerUrl", u+"piwik.php"]);
_paq.push(["setSiteId", "1"]);
var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
})();
</script>
<script type="text/javascript">

View File

@ -21,7 +21,7 @@
<!-- Custom Fonts -->
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href='https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
@ -96,57 +96,57 @@
WebDAV with nginx
</h2>
</a>
<p class="article-summary">
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...
</p>
<p class="post-meta">Posted by
<a href="https://captainark.net/author/antoine-joubert.html">Antoine Joubert</a>
on Sat 26 March 2016
</p>
<p>There are <a href="https://captainark.net/webdav-with-nginx.html#disqus_thread">comments</a>.</p> </div>
<p>There are <a data-disqus-identifier="webdav-with-nginx.html" href="https://captainark.net/webdav-with-nginx.html#disqus_thread">comments</a>.</p> </div>
<div class="post-preview">
<a href="https://captainark.net/postfix-admin.html" rel="bookmark" title="Permalink to Postfix Admin">
<h2 class="post-title">
Postfix Admin
</h2>
</a>
<p class="article-summary">
As I explained in this previous tutorial, I've been running my own mail server without any issue for some time now. However, every time...
</p>
<p class="post-meta">Posted by
<a href="https://captainark.net/author/antoine-joubert.html">Antoine Joubert</a>
on Sun 06 March 2016
</p>
<p>There are <a href="https://captainark.net/postfix-admin.html#disqus_thread">comments</a>.</p> </div>
<p>There are <a data-disqus-identifier="postfix-admin.html" href="https://captainark.net/postfix-admin.html#disqus_thread">comments</a>.</p> </div>
<div class="post-preview">
<a href="https://captainark.net/private-git-repo.html" rel="bookmark" title="Permalink to Private Git Repo">
<h2 class="post-title">
Private Git Repo
</h2>
</a>
<p class="article-summary">
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...
</p>
<p class="post-meta">Posted by
<a href="https://captainark.net/author/antoine-joubert.html">Antoine Joubert</a>
on Sun 31 January 2016
</p>
<p>There are <a href="https://captainark.net/private-git-repo.html#disqus_thread">comments</a>.</p> </div>
<p>There are <a data-disqus-identifier="private-git-repo.html" href="https://captainark.net/private-git-repo.html#disqus_thread">comments</a>.</p> </div>
<div class="post-preview">
<a href="https://captainark.net/setting-up-a-mail-server.html" rel="bookmark" title="Permalink to Setting up a mail server">
<h2 class="post-title">
Setting up a mail server
</h2>
</a>
<p class="article-summary">
In this first tutorial, I'll explain how I've configured my mail server using the following : A server running Linux Debian (jessie) ;...
</p>
<p class="post-meta">Posted by
<a href="https://captainark.net/author/antoine-joubert.html">Antoine Joubert</a>
on Fri 24 April 2015
</p>
<p>There are <a href="https://captainark.net/setting-up-a-mail-server.html#disqus_thread">comments</a>.</p> </div>
<p>There are <a data-disqus-identifier="setting-up-a-mail-server.html" href="https://captainark.net/setting-up-a-mail-server.html#disqus_thread">comments</a>.</p> </div>
<hr>
<!-- Pager -->
<ul class="pager">
<li class="next">
</li>
</ul>
Page 1 / 1
<hr>
</div>
</div>
</div>
@ -210,14 +210,14 @@
</ul>
<p class="copyright text-muted">
Blog powered by <a href="http://getpelican.com">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.
which takes great advantage of <a href="http://python.org">Python</a>. <br /> &copy; Antoine Joubert
</p> </div>
</div>
</div>
</footer>
<!-- jQuery -->
<script src="https://captainark.net/theme/js/jquery.js"></script>
<script src="https://captainark.net/theme/js/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="https://captainark.net/theme/js/bootstrap.min.js"></script>
@ -226,13 +226,16 @@
<script src="https://captainark.net/theme/js/clean-blog.min.js"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-53658366-1']);
_gaq.push(['_trackPageview']);
var pkBaseURL = "https://nibelungvalesti.net/stats";
var _paq = _paq || [];
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
var u=(("https:" == document.location.protocol) ? "https" : "http")+"://"+pkBaseURL+"/";
_paq.push(["setTrackerUrl", u+"piwik.php"]);
_paq.push(["setSiteId", "1"]);
var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
})();
</script>
<script type="text/javascript">

View File

@ -21,7 +21,7 @@
<!-- Custom Fonts -->
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href='https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
@ -187,9 +187,6 @@
</article>
<hr>
<div class="sharing">
</div>
<hr>
<div class="comments">
@ -270,14 +267,14 @@
</ul>
<p class="copyright text-muted">
Blog powered by <a href="http://getpelican.com">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.
which takes great advantage of <a href="http://python.org">Python</a>. <br /> &copy; Antoine Joubert
</p> </div>
</div>
</div>
</footer>
<!-- jQuery -->
<script src="https://captainark.net/theme/js/jquery.js"></script>
<script src="https://captainark.net/theme/js/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="https://captainark.net/theme/js/bootstrap.min.js"></script>
@ -286,13 +283,16 @@
<script src="https://captainark.net/theme/js/clean-blog.min.js"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-53658366-1']);
_gaq.push(['_trackPageview']);
var pkBaseURL = "https://nibelungvalesti.net/stats";
var _paq = _paq || [];
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
var u=(("https:" == document.location.protocol) ? "https" : "http")+"://"+pkBaseURL+"/";
_paq.push(["setTrackerUrl", u+"piwik.php"]);
_paq.push(["setSiteId", "1"]);
var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
})();
</script>
<script type="text/javascript">

View File

@ -21,7 +21,7 @@
<!-- Custom Fonts -->
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href='https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
@ -182,7 +182,7 @@
<span class="c1"># Exit if flexget not installed</span>
<span class="k">if</span> <span class="o">[</span> ! -x <span class="s2">&quot;</span><span class="nv">$DAEMON</span><span class="s2">&quot;</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span>
log_action_msg <span class="s2">&quot;</span><span class="nv">$DESC</span><span class="s2">: Could not find flexget executable. Exiting.&quot;</span>
<span class="nb">exit</span> 2
<span class="nb">exit</span> <span class="m">2</span>
<span class="k">fi</span>
<span class="c1"># Read configuration variables</span>
@ -190,13 +190,13 @@
. /etc/default/<span class="nv">$NAME</span>
<span class="k">else</span>
log_action_msg <span class="s2">&quot;</span><span class="nv">$DESC</span><span class="s2">: /etc/default/</span><span class="nv">$NAME</span><span class="s2"> not found. Exiting.&quot;</span>
<span class="nb">exit</span> 2
<span class="nb">exit</span> <span class="m">2</span>
<span class="k">fi</span>
<span class="c1"># Exit if FGUSER has not been set in /etc/default/flexget</span>
<span class="k">if</span> <span class="o">[</span> -z <span class="nv">$FGUSER</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span>
log_action_msg <span class="s2">&quot;</span><span class="nv">$DESC</span><span class="s2">: FGUSER not set in /etc/default/</span><span class="nv">$NAME</span><span class="s2">. Exiting.&quot;</span>
<span class="nb">exit</span> 2
<span class="nb">exit</span> <span class="m">2</span>
<span class="k">fi</span>
<span class="c1"># Function to verify if flexget is already running</span>
@ -210,11 +210,11 @@ run_check<span class="o">()</span> <span class="o">{</span>
end_log<span class="o">()</span> <span class="o">{</span>
<span class="k">if</span> <span class="o">[</span> <span class="nv">$RETVAL</span> -eq <span class="m">0</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span>
log_end_msg 0
<span class="k">return</span> 0
log_end_msg <span class="m">0</span>
<span class="k">return</span> <span class="m">0</span>
<span class="k">else</span>
log_end_msg 1
<span class="nb">exit</span> 1
log_end_msg <span class="m">1</span>
<span class="nb">exit</span> <span class="m">1</span>
<span class="k">fi</span>
<span class="o">}</span>
@ -247,7 +247,7 @@ start_flexget<span class="o">()</span> <span class="o">{</span>
run_check
<span class="k">if</span> <span class="o">[</span> <span class="nv">$RETVAL</span> <span class="o">=</span> <span class="m">0</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span>
log_action_msg <span class="s2">&quot;</span><span class="nv">$DESC</span><span class="s2">: Already running with PID </span><span class="k">$(</span>cat <span class="nv">$PIDFILE</span><span class="k">)</span><span class="s2">. Aborting.&quot;</span>
<span class="nb">exit</span> 2
<span class="nb">exit</span> <span class="m">2</span>
<span class="k">else</span>
conf_check
log_daemon_msg <span class="s2">&quot;</span><span class="nv">$DESC</span><span class="s2">: Starting the daemon.&quot;</span>
@ -262,13 +262,13 @@ stop_flexget<span class="o">()</span> <span class="o">{</span>
run_check
<span class="k">if</span> <span class="o">[</span> <span class="nv">$RETVAL</span> <span class="o">=</span> <span class="m">0</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span>
log_daemon_msg <span class="s2">&quot;</span><span class="nv">$DESC</span><span class="s2">: Stopping the daemon.&quot;</span>
start-stop-daemon --stop --quiet --chuid <span class="s2">&quot;</span><span class="nv">$FGUSER</span><span class="s2">&quot;</span> --pidfile <span class="s2">&quot;</span><span class="nv">$PIDFILE</span><span class="s2">&quot;</span> --retry 30
start-stop-daemon --stop --quiet --chuid <span class="s2">&quot;</span><span class="nv">$FGUSER</span><span class="s2">&quot;</span> --pidfile <span class="s2">&quot;</span><span class="nv">$PIDFILE</span><span class="s2">&quot;</span> --retry <span class="m">30</span>
<span class="nv">RETVAL</span><span class="o">=</span><span class="nv">$?</span>
<span class="o">[</span> -e <span class="s2">&quot;</span><span class="nv">$PIDFILE</span><span class="s2">&quot;</span> <span class="o">]</span> <span class="o">&amp;&amp;</span> rm -f <span class="s2">&quot;</span><span class="nv">$PIDFILE</span><span class="s2">&quot;</span>
end_log
<span class="k">else</span>
log_action_msg <span class="s2">&quot;</span><span class="nv">$DESC</span><span class="s2">: Not currently running. Aborting.&quot;</span>
<span class="nb">exit</span> 2
<span class="nb">exit</span> <span class="m">2</span>
<span class="k">fi</span>
<span class="o">}</span>
@ -300,7 +300,7 @@ status_flexget<span class="o">()</span> <span class="o">{</span>
<span class="p">;;</span>
<span class="k">esac</span>
<span class="nb">exit</span> 0
<span class="nb">exit</span> <span class="m">0</span>
</pre></div>
@ -347,9 +347,6 @@ service flexget status
</article>
<hr>
<div class="sharing">
</div>
<hr>
<div class="comments">
@ -430,14 +427,14 @@ service flexget status
</ul>
<p class="copyright text-muted">
Blog powered by <a href="http://getpelican.com">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.
which takes great advantage of <a href="http://python.org">Python</a>. <br /> &copy; Antoine Joubert
</p> </div>
</div>
</div>
</footer>
<!-- jQuery -->
<script src="https://captainark.net/theme/js/jquery.js"></script>
<script src="https://captainark.net/theme/js/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="https://captainark.net/theme/js/bootstrap.min.js"></script>
@ -446,13 +443,16 @@ service flexget status
<script src="https://captainark.net/theme/js/clean-blog.min.js"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-53658366-1']);
_gaq.push(['_trackPageview']);
var pkBaseURL = "https://nibelungvalesti.net/stats";
var _paq = _paq || [];
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
var u=(("https:" == document.location.protocol) ? "https" : "http")+"://"+pkBaseURL+"/";
_paq.push(["setTrackerUrl", u+"piwik.php"]);
_paq.push(["setSiteId", "1"]);
var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
})();
</script>
<script type="text/javascript">

View File

@ -21,7 +21,7 @@
<!-- Custom Fonts -->
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href='https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
@ -99,105 +99,113 @@
WebDAV with nginx
</h2>
</a>
<p class="article-summary">
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...
</p>
<p class="post-meta">Posted by
<a href="https://captainark.net/author/antoine-joubert.html">Antoine Joubert</a>
on Sat 26 March 2016
</p>
<p>There are <a href="https://captainark.net/webdav-with-nginx.html#disqus_thread">comments</a>.</p> </div>
<p>There are <a data-disqus-identifier="webdav-with-nginx.html" href="https://captainark.net/webdav-with-nginx.html#disqus_thread">comments</a>.</p> </div>
<div class="post-preview">
<a href="https://captainark.net/mysql-backup-script.html" rel="bookmark" title="Permalink to MySQL backup script">
<h2 class="post-title">
MySQL backup script
</h2>
</a>
<p class="article-summary">
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...
</p>
<p class="post-meta">Posted by
<a href="https://captainark.net/author/antoine-joubert.html">Antoine Joubert</a>
on Sun 13 March 2016
</p>
<p>There are <a href="https://captainark.net/mysql-backup-script.html#disqus_thread">comments</a>.</p> </div>
<p>There are <a data-disqus-identifier="mysql-backup-script.html" href="https://captainark.net/mysql-backup-script.html#disqus_thread">comments</a>.</p> </div>
<div class="post-preview">
<a href="https://captainark.net/postfix-admin.html" rel="bookmark" title="Permalink to Postfix Admin">
<h2 class="post-title">
Postfix Admin
</h2>
</a>
<p class="article-summary">
As I explained in this previous tutorial, I've been running my own mail server without any issue for some time now. However, every time...
</p>
<p class="post-meta">Posted by
<a href="https://captainark.net/author/antoine-joubert.html">Antoine Joubert</a>
on Sun 06 March 2016
</p>
<p>There are <a href="https://captainark.net/postfix-admin.html#disqus_thread">comments</a>.</p> </div>
<p>There are <a data-disqus-identifier="postfix-admin.html" href="https://captainark.net/postfix-admin.html#disqus_thread">comments</a>.</p> </div>
<div class="post-preview">
<a href="https://captainark.net/my-tmux-configuration.html" rel="bookmark" title="Permalink to My tmux configuration">
<h2 class="post-title">
My tmux configuration
</h2>
</a>
<p class="article-summary">
tmux is a terminal mutiplexer. It lets you have multiples shells running in a single terminal emulator window and it keeps those shells...
</p>
<p class="post-meta">Posted by
<a href="https://captainark.net/author/antoine-joubert.html">Antoine Joubert</a>
on Tue 02 February 2016
</p>
<p>There are <a href="https://captainark.net/my-tmux-configuration.html#disqus_thread">comments</a>.</p> </div>
<p>There are <a data-disqus-identifier="my-tmux-configuration.html" href="https://captainark.net/my-tmux-configuration.html#disqus_thread">comments</a>.</p> </div>
<div class="post-preview">
<a href="https://captainark.net/debian-updates-with-ansible.html" rel="bookmark" title="Permalink to Debian updates with Ansible">
<h2 class="post-title">
Debian updates with Ansible
</h2>
</a>
<p class="article-summary">
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...
</p>
<p class="post-meta">Posted by
<a href="https://captainark.net/author/antoine-joubert.html">Antoine Joubert</a>
on Sun 31 January 2016
</p>
<p>There are <a href="https://captainark.net/debian-updates-with-ansible.html#disqus_thread">comments</a>.</p> </div>
<p>There are <a data-disqus-identifier="debian-updates-with-ansible.html" href="https://captainark.net/debian-updates-with-ansible.html#disqus_thread">comments</a>.</p> </div>
<div class="post-preview">
<a href="https://captainark.net/private-git-repo.html" rel="bookmark" title="Permalink to Private Git Repo">
<h2 class="post-title">
Private Git Repo
</h2>
</a>
<p class="article-summary">
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...
</p>
<p class="post-meta">Posted by
<a href="https://captainark.net/author/antoine-joubert.html">Antoine Joubert</a>
on Sun 31 January 2016
</p>
<p>There are <a href="https://captainark.net/private-git-repo.html#disqus_thread">comments</a>.</p> </div>
<p>There are <a data-disqus-identifier="private-git-repo.html" href="https://captainark.net/private-git-repo.html#disqus_thread">comments</a>.</p> </div>
<div class="post-preview">
<a href="https://captainark.net/flexget-init-script.html" rel="bookmark" title="Permalink to Flexget init script">
<h2 class="post-title">
Flexget init script
</h2>
</a>
<p class="article-summary">
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...
</p>
<p class="post-meta">Posted by
<a href="https://captainark.net/author/antoine-joubert.html">Antoine Joubert</a>
on Tue 05 May 2015
</p>
<p>There are <a href="https://captainark.net/flexget-init-script.html#disqus_thread">comments</a>.</p> </div>
<p>There are <a data-disqus-identifier="flexget-init-script.html" href="https://captainark.net/flexget-init-script.html#disqus_thread">comments</a>.</p> </div>
<div class="post-preview">
<a href="https://captainark.net/setting-up-a-mail-server.html" rel="bookmark" title="Permalink to Setting up a mail server">
<h2 class="post-title">
Setting up a mail server
</h2>
</a>
<p class="article-summary">
In this first tutorial, I'll explain how I've configured my mail server using the following : A server running Linux Debian (jessie) ;...
</p>
<p class="post-meta">Posted by
<a href="https://captainark.net/author/antoine-joubert.html">Antoine Joubert</a>
on Fri 24 April 2015
</p>
<p>There are <a href="https://captainark.net/setting-up-a-mail-server.html#disqus_thread">comments</a>.</p> </div>
<p>There are <a data-disqus-identifier="setting-up-a-mail-server.html" href="https://captainark.net/setting-up-a-mail-server.html#disqus_thread">comments</a>.</p> </div>
<hr>
<!-- Pager -->
<ul class="pager">
<li class="next">
</li>
</ul>
Page 1 / 1
<hr>
</div>
</div>
</div>
@ -261,14 +269,14 @@
</ul>
<p class="copyright text-muted">
Blog powered by <a href="http://getpelican.com">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.
which takes great advantage of <a href="http://python.org">Python</a>. <br /> &copy; Antoine Joubert
</p> </div>
</div>
</div>
</footer>
<!-- jQuery -->
<script src="https://captainark.net/theme/js/jquery.js"></script>
<script src="https://captainark.net/theme/js/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="https://captainark.net/theme/js/bootstrap.min.js"></script>
@ -277,13 +285,16 @@
<script src="https://captainark.net/theme/js/clean-blog.min.js"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-53658366-1']);
_gaq.push(['_trackPageview']);
var pkBaseURL = "https://nibelungvalesti.net/stats";
var _paq = _paq || [];
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
var u=(("https:" == document.location.protocol) ? "https" : "http")+"://"+pkBaseURL+"/";
_paq.push(["setTrackerUrl", u+"piwik.php"]);
_paq.push(["setSiteId", "1"]);
var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
})();
</script>
<script type="text/javascript">

View File

@ -21,7 +21,7 @@
<!-- Custom Fonts -->
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href='https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
@ -117,7 +117,7 @@
<article>
<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><a href="images/tmux_fullsize.png"><img alt="tmux" src="images/tmux.png" /></a></p>
<p><a href="images/tmux_fullsize.png"><img alt="tmux" src="images/tmux.png"></a></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>Installing tmux</h2>
@ -284,9 +284,6 @@ bind &#39;&quot;&#39; choose-window
</article>
<hr>
<div class="sharing">
</div>
<hr>
<div class="comments">
@ -367,14 +364,14 @@ bind &#39;&quot;&#39; choose-window
</ul>
<p class="copyright text-muted">
Blog powered by <a href="http://getpelican.com">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.
which takes great advantage of <a href="http://python.org">Python</a>. <br /> &copy; Antoine Joubert
</p> </div>
</div>
</div>
</footer>
<!-- jQuery -->
<script src="https://captainark.net/theme/js/jquery.js"></script>
<script src="https://captainark.net/theme/js/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="https://captainark.net/theme/js/bootstrap.min.js"></script>
@ -383,13 +380,16 @@ bind &#39;&quot;&#39; choose-window
<script src="https://captainark.net/theme/js/clean-blog.min.js"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-53658366-1']);
_gaq.push(['_trackPageview']);
var pkBaseURL = "https://nibelungvalesti.net/stats";
var _paq = _paq || [];
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
var u=(("https:" == document.location.protocol) ? "https" : "http")+"://"+pkBaseURL+"/";
_paq.push(["setTrackerUrl", u+"piwik.php"]);
_paq.push(["setSiteId", "1"]);
var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
})();
</script>
<script type="text/javascript">

View File

@ -21,7 +21,7 @@
<!-- Custom Fonts -->
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href='https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
@ -157,9 +157,6 @@ sqlbk<span class="o">()</span> <span class="o">{</span>
</article>
<hr>
<div class="sharing">
</div>
<hr>
<div class="comments">
@ -240,14 +237,14 @@ sqlbk<span class="o">()</span> <span class="o">{</span>
</ul>
<p class="copyright text-muted">
Blog powered by <a href="http://getpelican.com">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.
which takes great advantage of <a href="http://python.org">Python</a>. <br /> &copy; Antoine Joubert
</p> </div>
</div>
</div>
</footer>
<!-- jQuery -->
<script src="https://captainark.net/theme/js/jquery.js"></script>
<script src="https://captainark.net/theme/js/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="https://captainark.net/theme/js/bootstrap.min.js"></script>
@ -256,13 +253,16 @@ sqlbk<span class="o">()</span> <span class="o">{</span>
<script src="https://captainark.net/theme/js/clean-blog.min.js"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-53658366-1']);
_gaq.push(['_trackPageview']);
var pkBaseURL = "https://nibelungvalesti.net/stats";
var _paq = _paq || [];
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
var u=(("https:" == document.location.protocol) ? "https" : "http")+"://"+pkBaseURL+"/";
_paq.push(["setTrackerUrl", u+"piwik.php"]);
_paq.push(["setSiteId", "1"]);
var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
})();
</script>
<script type="text/javascript">

View File

@ -21,7 +21,7 @@
<!-- Custom Fonts -->
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href='https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
@ -156,14 +156,14 @@
</ul>
<p class="copyright text-muted">
Blog powered by <a href="http://getpelican.com">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.
which takes great advantage of <a href="http://python.org">Python</a>. <br /> &copy; Antoine Joubert
</p> </div>
</div>
</div>
</footer>
<!-- jQuery -->
<script src="https://captainark.net/theme/js/jquery.js"></script>
<script src="https://captainark.net/theme/js/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="https://captainark.net/theme/js/bootstrap.min.js"></script>
@ -172,13 +172,16 @@
<script src="https://captainark.net/theme/js/clean-blog.min.js"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-53658366-1']);
_gaq.push(['_trackPageview']);
var pkBaseURL = "https://nibelungvalesti.net/stats";
var _paq = _paq || [];
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
var u=(("https:" == document.location.protocol) ? "https" : "http")+"://"+pkBaseURL+"/";
_paq.push(["setTrackerUrl", u+"piwik.php"]);
_paq.push(["setSiteId", "1"]);
var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
})();
</script>
<script type="text/javascript">

View File

@ -21,7 +21,7 @@
<!-- Custom Fonts -->
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href='https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
@ -111,7 +111,7 @@
</ul>
<h2>Work Experience</h2>
<p><strong>NAMESHIELD (Angers, France)</strong> </p>
<p><em>Network Architect, from 09/2013 to now</em></p>
<p><em>Network Architect, from 09/2015 to now</em></p>
<ul>
<li>Technical projects management :</li>
<li>WiFi deployment, using Cisco WLC and Aironet devices as well as Freeradius for EAP-TLS/802.1x user authentication ;</li>
@ -221,14 +221,14 @@
</ul>
<p class="copyright text-muted">
Blog powered by <a href="http://getpelican.com">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.
which takes great advantage of <a href="http://python.org">Python</a>. <br /> &copy; Antoine Joubert
</p> </div>
</div>
</div>
</footer>
<!-- jQuery -->
<script src="https://captainark.net/theme/js/jquery.js"></script>
<script src="https://captainark.net/theme/js/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="https://captainark.net/theme/js/bootstrap.min.js"></script>
@ -237,13 +237,16 @@
<script src="https://captainark.net/theme/js/clean-blog.min.js"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-53658366-1']);
_gaq.push(['_trackPageview']);
var pkBaseURL = "https://nibelungvalesti.net/stats";
var _paq = _paq || [];
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
var u=(("https:" == document.location.protocol) ? "https" : "http")+"://"+pkBaseURL+"/";
_paq.push(["setTrackerUrl", u+"piwik.php"]);
_paq.push(["setSiteId", "1"]);
var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
})();
</script>
<script type="text/javascript">

View File

@ -21,7 +21,7 @@
<!-- Custom Fonts -->
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href='https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
@ -228,9 +228,6 @@ rm /etc/dovecot/sql.conf.bak
</article>
<hr>
<div class="sharing">
</div>
<hr>
<div class="comments">
@ -311,14 +308,14 @@ rm /etc/dovecot/sql.conf.bak
</ul>
<p class="copyright text-muted">
Blog powered by <a href="http://getpelican.com">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.
which takes great advantage of <a href="http://python.org">Python</a>. <br /> &copy; Antoine Joubert
</p> </div>
</div>
</div>
</footer>
<!-- jQuery -->
<script src="https://captainark.net/theme/js/jquery.js"></script>
<script src="https://captainark.net/theme/js/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="https://captainark.net/theme/js/bootstrap.min.js"></script>
@ -327,13 +324,16 @@ rm /etc/dovecot/sql.conf.bak
<script src="https://captainark.net/theme/js/clean-blog.min.js"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-53658366-1']);
_gaq.push(['_trackPageview']);
var pkBaseURL = "https://nibelungvalesti.net/stats";
var _paq = _paq || [];
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
var u=(("https:" == document.location.protocol) ? "https" : "http")+"://"+pkBaseURL+"/";
_paq.push(["setTrackerUrl", u+"piwik.php"]);
_paq.push(["setSiteId", "1"]);
var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
})();
</script>
<script type="text/javascript">

View File

@ -21,7 +21,7 @@
<!-- Custom Fonts -->
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href='https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
@ -123,7 +123,7 @@
<h2>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>
<div class="highlight"><pre><span></span>ssh-keygen -t rsa -b 3072
<div class="highlight"><pre><span></span>ssh-keygen -t rsa -b <span class="m">3072</span>
Generating public/private rsa key pair.
Enter file in which to save the key <span class="o">(</span>/home/user/.ssh/id_rsa<span class="o">)</span>:
Enter passphrase <span class="o">(</span>empty <span class="k">for</span> no passphrase<span class="o">)</span>:
@ -137,7 +137,7 @@ The key fingerprint is:
<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>
<div class="highlight"><pre><span></span>sudo -H -u www-data ssh-keygen -t rsa -b 3072
<div class="highlight"><pre><span></span>sudo -H -u www-data ssh-keygen -t rsa -b <span class="m">3072</span>
Generating public/private rsa key pair.
Enter file in which to save the key <span class="o">(</span>/var/www/.ssh/id_rsa<span class="o">)</span>:
Enter passphrase <span class="o">(</span>empty <span class="k">for</span> no passphrase<span class="o">)</span>:
@ -214,11 +214,11 @@ git push origin master
<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>
<div class="highlight"><pre><span></span>Counting objects: 69, <span class="k">done</span>.
<div class="highlight"><pre><span></span>Counting objects: <span class="m">69</span>, <span class="k">done</span>.
Delta compression using up to <span class="m">4</span> threads.
Compressing objects: 100% <span class="o">(</span>64/64<span class="o">)</span>, <span class="k">done</span>.
Writing objects: 100% <span class="o">(</span>69/69<span class="o">)</span>, 1.01 MiB <span class="p">|</span> <span class="m">0</span> bytes/s, <span class="k">done</span>.
Total <span class="m">69</span> <span class="o">(</span>delta 15<span class="o">)</span>, reused <span class="m">0</span> <span class="o">(</span>delta 0<span class="o">)</span>
Compressing objects: <span class="m">100</span>% <span class="o">(</span><span class="m">64</span>/64<span class="o">)</span>, <span class="k">done</span>.
Writing objects: <span class="m">100</span>% <span class="o">(</span><span class="m">69</span>/69<span class="o">)</span>, <span class="m">1</span>.01 MiB <span class="p">|</span> <span class="m">0</span> bytes/s, <span class="k">done</span>.
Total <span class="m">69</span> <span class="o">(</span>delta <span class="m">15</span><span class="o">)</span>, reused <span class="m">0</span> <span class="o">(</span>delta <span class="m">0</span><span class="o">)</span>
To git@git.captainark.net:captainarkdotnet.git
* <span class="o">[</span>new branch<span class="o">]</span> master -&gt; master
</pre></div>
@ -234,11 +234,11 @@ sudo -H -u www-data git clone git@git.captainark.net:captainarkdotnet.git
<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>
<div class="highlight"><pre><span></span>Cloning into <span class="s1">&#39;captainarkdotnet&#39;</span>...
remote: Counting objects: 70, <span class="k">done</span>.
remote: Compressing objects: 100% <span class="o">(</span>65/65<span class="o">)</span>, <span class="k">done</span>.
remote: Total <span class="m">70</span> <span class="o">(</span>delta 16<span class="o">)</span>, reused <span class="m">0</span> <span class="o">(</span>delta 0<span class="o">)</span>
Receiving objects: 100% <span class="o">(</span>70/70<span class="o">)</span>, 1.01 MiB <span class="p">|</span> <span class="m">0</span> bytes/s, <span class="k">done</span>.
Resolving deltas: 100% <span class="o">(</span>16/16<span class="o">)</span>, <span class="k">done</span>.
remote: Counting objects: <span class="m">70</span>, <span class="k">done</span>.
remote: Compressing objects: <span class="m">100</span>% <span class="o">(</span><span class="m">65</span>/65<span class="o">)</span>, <span class="k">done</span>.
remote: Total <span class="m">70</span> <span class="o">(</span>delta <span class="m">16</span><span class="o">)</span>, reused <span class="m">0</span> <span class="o">(</span>delta <span class="m">0</span><span class="o">)</span>
Receiving objects: <span class="m">100</span>% <span class="o">(</span><span class="m">70</span>/70<span class="o">)</span>, <span class="m">1</span>.01 MiB <span class="p">|</span> <span class="m">0</span> bytes/s, <span class="k">done</span>.
Resolving deltas: <span class="m">100</span>% <span class="o">(</span><span class="m">16</span>/16<span class="o">)</span>, <span class="k">done</span>.
Checking connectivity... <span class="k">done</span>.
</pre></div>
@ -259,9 +259,6 @@ Checking connectivity... <span class="k">done</span>.
</article>
<hr>
<div class="sharing">
</div>
<hr>
<div class="comments">
@ -342,14 +339,14 @@ Checking connectivity... <span class="k">done</span>.
</ul>
<p class="copyright text-muted">
Blog powered by <a href="http://getpelican.com">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.
which takes great advantage of <a href="http://python.org">Python</a>. <br /> &copy; Antoine Joubert
</p> </div>
</div>
</div>
</footer>
<!-- jQuery -->
<script src="https://captainark.net/theme/js/jquery.js"></script>
<script src="https://captainark.net/theme/js/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="https://captainark.net/theme/js/bootstrap.min.js"></script>
@ -358,13 +355,16 @@ Checking connectivity... <span class="k">done</span>.
<script src="https://captainark.net/theme/js/clean-blog.min.js"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-53658366-1']);
_gaq.push(['_trackPageview']);
var pkBaseURL = "https://nibelungvalesti.net/stats";
var _paq = _paq || [];
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
var u=(("https:" == document.location.protocol) ? "https" : "http")+"://"+pkBaseURL+"/";
_paq.push(["setTrackerUrl", u+"piwik.php"]);
_paq.push(["setSiteId", "1"]);
var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
})();
</script>
<script type="text/javascript">

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Sysadmining. All day. Every day.</title><link href="https://captainark.net/" rel="alternate"></link><link href="https://captainark.net/rss.xml" rel="self"></link><id>https://captainark.net/</id><updated>2016-03-26T00:00:00+01:00</updated><entry><title>WebDAV with nginx</title><link href="https://captainark.net/webdav-with-nginx.html" rel="alternate"></link><published>2016-03-26T00:00:00+01:00</published><author><name>Antoine Joubert</name></author><id>tag:captainark.net,2016-03-26:webdav-with-nginx.html</id><summary type="html">&lt;p&gt;This website has been hosted on an &lt;a href="https://www.online.net"&gt;Online.net&lt;/a&gt; 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.&lt;/p&gt;
<feed xmlns="http://www.w3.org/2005/Atom"><title>Sysadmining. All day. Every day.</title><link href="https://captainark.net/" rel="alternate"></link><link href="https://captainark.net/rss.xml" rel="self"></link><id>https://captainark.net/</id><updated>2016-03-26T00:00:00+01:00</updated><entry><title>WebDAV with nginx</title><link href="https://captainark.net/webdav-with-nginx.html" rel="alternate"></link><published>2016-03-26T00:00:00+01:00</published><updated>2016-03-26T00:00:00+01:00</updated><author><name>Antoine Joubert</name></author><id>tag:captainark.net,2016-03-26:/webdav-with-nginx.html</id><summary type="html">&lt;p&gt;This website has been hosted on an &lt;a href="https://www.online.net"&gt;Online.net&lt;/a&gt; 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.&lt;/p&gt;
&lt;p&gt;They recently upgraded their personnal range, and I took the opportunity to upgrade …&lt;/p&gt;</summary><content type="html">&lt;p&gt;This website has been hosted on an &lt;a href="https://www.online.net"&gt;Online.net&lt;/a&gt; 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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
@ -77,16 +78,16 @@ apt install apache2-utils
&lt;p&gt;Let's now create a &lt;code&gt;/etc/nginx/conf.d/ssl.conf&lt;/code&gt; with the following content :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nt"&gt;ssl_session_timeout&lt;/span&gt; &lt;span class="nt"&gt;1d&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;ssl_session_cache&lt;/span&gt; &lt;span class="nt"&gt;shared&lt;/span&gt;&lt;span class="nd"&gt;:SSL:50m&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;ssl_session_cache&lt;/span&gt; &lt;span class="nt"&gt;shared&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nd"&gt;SSL&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nd"&gt;50m&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;ssl_session_tickets&lt;/span&gt; &lt;span class="nt"&gt;off&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;ssl_certificate&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;letsencrypt&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;live&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;www&lt;/span&gt;&lt;span class="nc"&gt;.example.com&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;fullchain&lt;/span&gt;&lt;span class="nc"&gt;.pem&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;ssl_certificate_key&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;letsencrypt&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;live&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;www&lt;/span&gt;&lt;span class="nc"&gt;.example.com&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;privkey&lt;/span&gt;&lt;span class="nc"&gt;.pem&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;ssl_trusted_certificate&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;letsencrypt&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;live&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;www&lt;/span&gt;&lt;span class="nc"&gt;.example.com&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;fullchain&lt;/span&gt;&lt;span class="nc"&gt;.pem&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;ssl_certificate&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;letsencrypt&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;live&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;www&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;com&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;fullchain&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;pem&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;ssl_certificate_key&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;letsencrypt&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;live&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;www&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;com&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;privkey&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;pem&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;ssl_trusted_certificate&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;letsencrypt&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;live&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;www&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;example&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;com&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;fullchain&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;pem&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;ssl_dhparam&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;nginx&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;ssl&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;dhparam&lt;/span&gt;&lt;span class="nc"&gt;.pem&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;ssl_dhparam&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;etc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;nginx&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;ssl&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;dhparam&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;pem&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;ssl_protocols&lt;/span&gt; &lt;span class="nt"&gt;TLSv1&lt;/span&gt; &lt;span class="nt"&gt;TLSv1&lt;/span&gt;&lt;span class="nc"&gt;.1&lt;/span&gt; &lt;span class="nt"&gt;TLSv1&lt;/span&gt;&lt;span class="nc"&gt;.2&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;ssl_protocols&lt;/span&gt; &lt;span class="nt"&gt;TLSv1&lt;/span&gt; &lt;span class="nt"&gt;TLSv1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;1&lt;/span&gt; &lt;span class="nt"&gt;TLSv1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;2&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;ssl_ciphers&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;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&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;ssl_prefer_server_ciphers&lt;/span&gt; &lt;span class="nt"&gt;on&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
@ -96,7 +97,7 @@ apt install apache2-utils
&lt;span class="nt"&gt;ssl_stapling&lt;/span&gt; &lt;span class="nt"&gt;on&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;ssl_stapling_verify&lt;/span&gt; &lt;span class="nt"&gt;on&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;resolver&lt;/span&gt; &lt;span class="nt"&gt;127&lt;/span&gt;&lt;span class="nc"&gt;.0.0.1&lt;/span&gt; &lt;span class="nt"&gt;valid&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;300s&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;resolver&lt;/span&gt; &lt;span class="nt"&gt;127&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;1&lt;/span&gt; &lt;span class="nt"&gt;valid&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;300s&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;resolver_timeout&lt;/span&gt; &lt;span class="nt"&gt;5s&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
@ -104,7 +105,7 @@ apt install apache2-utils
&lt;p&gt;&lt;em&gt;This configuration will work if you're using a single certificate on your server. If not, you'll have to remove the &lt;code&gt;ssl_certificate&lt;/code&gt;, &lt;code&gt;ssl_certificate_key&lt;/code&gt; and &lt;code&gt;ssl_trusted_certificate&lt;/code&gt; directives from this file and move them to the correct &lt;code&gt;server{}&lt;/code&gt; block.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;We now need to generate a &lt;code&gt;dhparam.pem&lt;/code&gt; file :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;mkdir /etc/nginx/ssl &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; chmod &lt;span class="m"&gt;700&lt;/span&gt; /etc/nginx/ssl
openssl dhparam -out /etc/nginx/ssl/dhparam.pem 3072
openssl dhparam -out /etc/nginx/ssl/dhparam.pem &lt;span class="m"&gt;3072&lt;/span&gt;
chmod &lt;span class="m"&gt;600&lt;/span&gt; /etc/nginx/ssl/dhparam.pem
&lt;/pre&gt;&lt;/div&gt;
@ -147,40 +148,40 @@ server {
&lt;p&gt;We now have to create a &lt;code&gt;/etc/nginx/sites-available/example&lt;/code&gt; file that will contain our actual webdav configuration. This example makes a &lt;code&gt;data&lt;/code&gt; folder stored in &lt;code&gt;/var/www/&lt;/code&gt; accessible.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nt"&gt;server&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;listen&lt;/span&gt; &lt;span class="m"&gt;80&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;listen&lt;/span&gt; &lt;span class="cp"&gt;[&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="cp"&gt;]&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;80&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;server_name&lt;/span&gt; &lt;span class="n"&gt;www&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;return&lt;/span&gt; &lt;span class="m"&gt;301&lt;/span&gt; &lt;span class="n"&gt;https&lt;/span&gt;&lt;span class="o"&gt;://&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;server_name&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;request_uri&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;listen&lt;/span&gt; &lt;span class="err"&gt;80&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;listen&lt;/span&gt; &lt;span class="cp"&gt;[&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="cp"&gt;]&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;server_name&lt;/span&gt; &lt;span class="err"&gt;www.example.com&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;return&lt;/span&gt; &lt;span class="err"&gt;301&lt;/span&gt; &lt;span class="n"&gt;https&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;server_name&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="n"&gt;request_uri&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;server&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;listen&lt;/span&gt; &lt;span class="m"&gt;443&lt;/span&gt; &lt;span class="n"&gt;ssl&lt;/span&gt; &lt;span class="n"&gt;http2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;listen&lt;/span&gt; &lt;span class="cp"&gt;[&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="cp"&gt;]&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="m"&gt;443&lt;/span&gt; &lt;span class="n"&gt;ssl&lt;/span&gt; &lt;span class="n"&gt;http2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;server_name&lt;/span&gt; &lt;span class="n"&gt;www&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;example&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;listen&lt;/span&gt; &lt;span class="err"&gt;443&lt;/span&gt; &lt;span class="err"&gt;ssl&lt;/span&gt; &lt;span class="err"&gt;http2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;listen&lt;/span&gt; &lt;span class="cp"&gt;[&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="cp"&gt;]&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;443&lt;/span&gt; &lt;span class="n"&gt;ssl&lt;/span&gt; &lt;span class="n"&gt;http2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;server_name&lt;/span&gt; &lt;span class="err"&gt;www.example.com&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;root&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;www&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;root&lt;/span&gt; &lt;span class="err"&gt;/var/www&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;location&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;index&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;html&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;location&lt;/span&gt; &lt;span class="err"&gt;/&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt;
&lt;span class="err"&gt;index&lt;/span&gt; &lt;span class="err"&gt;index.html&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;location&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nc"&gt;.well-known&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;acme-challenge&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;root&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;www&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;letsencrypt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nt"&gt;location&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;well-known&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;acme-challenge&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="err"&gt;root&lt;/span&gt; &lt;span class="err"&gt;/var/www/letsencrypt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;location&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nt"&gt;data&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;client_body_temp_path&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;tmp&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;dav_methods&lt;/span&gt; &lt;span class="n"&gt;PUT&lt;/span&gt; &lt;span class="n"&gt;DELETE&lt;/span&gt; &lt;span class="n"&gt;MKCOL&lt;/span&gt; &lt;span class="n"&gt;COPY&lt;/span&gt; &lt;span class="n"&gt;MOVE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;dav_ext_methods&lt;/span&gt; &lt;span class="n"&gt;PROPFIND&lt;/span&gt; &lt;span class="n"&gt;OPTIONS&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;create_full_put_path&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;dav_access&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="n"&gt;group&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;client_body_temp_path&lt;/span&gt; &lt;span class="err"&gt;/tmp&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;dav_methods&lt;/span&gt; &lt;span class="err"&gt;PUT&lt;/span&gt; &lt;span class="err"&gt;DELETE&lt;/span&gt; &lt;span class="err"&gt;MKCOL&lt;/span&gt; &lt;span class="err"&gt;COPY&lt;/span&gt; &lt;span class="err"&gt;MOVE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;dav_ext_methods&lt;/span&gt; &lt;span class="err"&gt;PROPFIND&lt;/span&gt; &lt;span class="err"&gt;OPTIONS&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;create_full_put_path&lt;/span&gt; &lt;span class="err"&gt;on&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;dav_access&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="n"&gt;group&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;auth_basic&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Restricted access&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;auth_basic_user_file&lt;/span&gt; &lt;span class="n"&gt;auth&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;webdav&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;auth_basic&lt;/span&gt; &lt;span class="err"&gt;&amp;quot;Restricted&lt;/span&gt; &lt;span class="err"&gt;access&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;auth_basic_user_file&lt;/span&gt; &lt;span class="err"&gt;auth/webdav&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;limit_except&lt;/span&gt; &lt;span class="n"&gt;GET&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;allow&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;YOUR&lt;/span&gt; &lt;span class="n"&gt;IP&lt;/span&gt; &lt;span class="n"&gt;HERE&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;deny&lt;/span&gt; &lt;span class="n"&gt;all&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;limit_except&lt;/span&gt; &lt;span class="err"&gt;GET&lt;/span&gt; &lt;span class="err"&gt;{&lt;/span&gt;
&lt;span class="err"&gt;allow&lt;/span&gt; &lt;span class="err"&gt;&amp;lt;YOUR&lt;/span&gt; &lt;span class="err"&gt;IP&lt;/span&gt; &lt;span class="err"&gt;HERE&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="err"&gt;deny&lt;/span&gt; &lt;span class="err"&gt;all&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="err"&gt;}&lt;/span&gt;
@ -234,7 +235,7 @@ nginx -s reload
&lt;span class="nv"&gt;PRG&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;/usr/bin/letsencrypt&amp;quot;&lt;/span&gt;
&lt;span class="nv"&gt;CONFIG&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;/etc/letsencrypt/cli.ini&amp;quot;&lt;/span&gt;
&lt;span class="nv"&gt;MAILDEST&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;admin@example.com&amp;quot;&lt;/span&gt;
&lt;span class="nv"&gt;GLOBAL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0
&lt;span class="nv"&gt;GLOBAL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;
&lt;span class="c1"&gt;# www.example.com&lt;/span&gt;
&lt;span class="nv"&gt;$PRG&lt;/span&gt; --config &lt;span class="nv"&gt;$CONFIG&lt;/span&gt; certonly -w /var/www/letsencrypt -d www.example.com
@ -299,8 +300,8 @@ nginx -s reload
3
4&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="ch"&gt;#!/bin/bash&lt;/span&gt;
mknod /dev/fuse c &lt;span class="m"&gt;10&lt;/span&gt; 229
mount -t davfs https://www.example.com/data /data -o ro,dir_mode&lt;span class="o"&gt;=&lt;/span&gt;750,file_mode&lt;span class="o"&gt;=&lt;/span&gt;640,uid&lt;span class="o"&gt;=&lt;/span&gt;root,gid&lt;span class="o"&gt;=&lt;/span&gt;root
mknod /dev/fuse c &lt;span class="m"&gt;10&lt;/span&gt; &lt;span class="m"&gt;229&lt;/span&gt;
mount -t davfs https://www.example.com/data /data -o ro,dir_mode&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;750&lt;/span&gt;,file_mode&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;640&lt;/span&gt;,uid&lt;span class="o"&gt;=&lt;/span&gt;root,gid&lt;span class="o"&gt;=&lt;/span&gt;root
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
@ -313,7 +314,9 @@ mount -t davfs https://www.example.com/data /data -o ro,dir_mode&lt;span class="
&lt;p&gt;That way, if monit notices that the &lt;code&gt;/data/davfs.txt&lt;/code&gt; file becomes inaccessible for some reason, it will try remouting the share.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;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 !&lt;/p&gt;</summary></entry><entry><title>MySQL backup script</title><link href="https://captainark.net/mysql-backup-script.html" rel="alternate"></link><published>2016-03-13T00:00:00+01:00</published><author><name>Antoine Joubert</name></author><id>tag:captainark.net,2016-03-13:mysql-backup-script.html</id><summary type="html">&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;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 !&lt;/p&gt;</content></entry><entry><title>MySQL backup script</title><link href="https://captainark.net/mysql-backup-script.html" rel="alternate"></link><published>2016-03-13T00:00:00+01:00</published><updated>2016-03-13T00:00:00+01:00</updated><author><name>Antoine Joubert</name></author><id>tag:captainark.net,2016-03-13:/mysql-backup-script.html</id><summary type="html">&lt;p&gt;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.&lt;/p&gt;
&lt;h2&gt;The script&lt;/h2&gt;
&lt;p&gt;For the script to work, you'll need to edit a few variable to match your …&lt;/p&gt;</summary><content type="html">&lt;p&gt;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.&lt;/p&gt;
&lt;h2&gt;The script&lt;/h2&gt;
&lt;p&gt;For the script to work, you'll need to edit a few variable to match your configuration.&lt;/p&gt;
&lt;ul&gt;
@ -351,7 +354,8 @@ sqlbk&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
&lt;h1&gt;Conclusion&lt;/h1&gt;
&lt;p&gt;You've probably noticed that the script erases the previous backup when a new one is made.&lt;/p&gt;
&lt;p&gt;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 &lt;a href="http://rsnapshot.org/"&gt;Rsnapshot&lt;/a&gt;. I'll probably write an article on the subject in the future.&lt;/p&gt;
&lt;p&gt;As usual, feedback is always appreciated !&lt;/p&gt;</summary></entry><entry><title>Postfix Admin</title><link href="https://captainark.net/postfix-admin.html" rel="alternate"></link><published>2016-03-06T00:00:00+01:00</published><author><name>Antoine Joubert</name></author><id>tag:captainark.net,2016-03-06:postfix-admin.html</id><summary type="html">&lt;p&gt;As I explained in &lt;a href="https://www.captainark.net/setting-up-a-mail-server.html"&gt;this previous tutorial&lt;/a&gt;, I've been running my own mail server without any issue for some time now.&lt;/p&gt;
&lt;p&gt;As usual, feedback is always appreciated !&lt;/p&gt;</content></entry><entry><title>Postfix Admin</title><link href="https://captainark.net/postfix-admin.html" rel="alternate"></link><published>2016-03-06T00:00:00+01:00</published><updated>2016-03-06T00:00:00+01:00</updated><author><name>Antoine Joubert</name></author><id>tag:captainark.net,2016-03-06:/postfix-admin.html</id><summary type="html">&lt;p&gt;As I explained in &lt;a href="https://www.captainark.net/setting-up-a-mail-server.html"&gt;this previous tutorial&lt;/a&gt;, I've been running my own mail server without any issue for some time now.&lt;/p&gt;
&lt;p&gt;However, every time I've wanted to add a domain, create a new mailbox or change a user's password, I've had to do it manually from a SQL shell. As …&lt;/p&gt;</summary><content type="html">&lt;p&gt;As I explained in &lt;a href="https://www.captainark.net/setting-up-a-mail-server.html"&gt;this previous tutorial&lt;/a&gt;, I've been running my own mail server without any issue for some time now.&lt;/p&gt;
&lt;p&gt;However, every time I've wanted to add a domain, create a new mailbox or change a user's password, I've had to do it manually from a SQL shell. As fun as it may be, it does get old very fast, so I've decided to install a web frontend to manage this database.&lt;/p&gt;
&lt;p&gt;After a bit a googling, I've settled on &lt;a href="http://postfixadmin.sourceforge.net/"&gt;Postfix Admin&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The latest stable version of Postfix Admin was released in 2009. Version 3.0 has been in the works for some time now and the project can be cloned from their &lt;a href="https://github.com/postfixadmin/postfixadmin"&gt;Github repo&lt;/a&gt;.&lt;/p&gt;
@ -460,9 +464,10 @@ rm /etc/dovecot/sql.conf.bak
&lt;h1&gt;Conclusion&lt;/h1&gt;
&lt;p&gt;That's all ! As always, please do leave a comment if this article has been of any use to you !&lt;/p&gt;</summary></entry><entry><title>My tmux configuration</title><link href="https://captainark.net/my-tmux-configuration.html" rel="alternate"></link><published>2016-02-02T00:00:00+01:00</published><author><name>Antoine Joubert</name></author><id>tag:captainark.net,2016-02-02:my-tmux-configuration.html</id><summary type="html">&lt;p&gt;&lt;a href="https://tmux.github.io/"&gt;tmux&lt;/a&gt; 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.&lt;/p&gt;
&lt;p&gt;That's all ! As always, please do leave a comment if this article has been of any use to you !&lt;/p&gt;</content></entry><entry><title>My tmux configuration</title><link href="https://captainark.net/my-tmux-configuration.html" rel="alternate"></link><published>2016-02-02T00:00:00+01:00</published><updated>2016-02-02T00:00:00+01:00</updated><author><name>Antoine Joubert</name></author><id>tag:captainark.net,2016-02-02:/my-tmux-configuration.html</id><summary type="html">&lt;p&gt;&lt;a href="https://tmux.github.io/"&gt;tmux&lt;/a&gt; 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.&lt;/p&gt;
&lt;p&gt;I've played around with the configuration quite a bit to find settings that suit my …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;a href="https://tmux.github.io/"&gt;tmux&lt;/a&gt; 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.&lt;/p&gt;
&lt;p&gt;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 :&lt;/p&gt;
&lt;p&gt;&lt;a href="images/tmux_fullsize.png"&gt;&lt;img alt="tmux" src="images/tmux.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="images/tmux_fullsize.png"&gt;&lt;img alt="tmux" src="images/tmux.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This screenshot was done on Mac OS X, using the Terminal app and this &lt;a href="https://github.com/tomislav/osx-terminal.app-colors-solarized"&gt;Solarized theme&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I figured I'd share my tmux configuration here !&lt;/p&gt;
&lt;h2&gt;Installing tmux&lt;/h2&gt;
@ -625,7 +630,9 @@ bind &amp;#39;&amp;quot;&amp;#39; choose-window
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;That's all ! As always, please do leave a comment if you've found something useful in this article !&lt;/p&gt;</summary></entry><entry><title>Debian updates with Ansible</title><link href="https://captainark.net/debian-updates-with-ansible.html" rel="alternate"></link><published>2016-01-31T00:00:00+01:00</published><author><name>Antoine Joubert</name></author><id>tag:captainark.net,2016-01-31:debian-updates-with-ansible.html</id><summary type="html">&lt;p&gt;I've recently bought a &lt;a href="http://www8.hp.com/us/en/products/proliant-servers/product-detail.html?oid=5379860"&gt;HP Proliant Microserver Gen8&lt;/a&gt; to play around with LXC and try new stuff.&lt;/p&gt;
&lt;p&gt;That's all ! As always, please do leave a comment if you've found something useful in this article !&lt;/p&gt;</content></entry><entry><title>Debian updates with Ansible</title><link href="https://captainark.net/debian-updates-with-ansible.html" rel="alternate"></link><published>2016-01-31T00:00:00+01:00</published><updated>2016-01-31T00:00:00+01:00</updated><author><name>Antoine Joubert</name></author><id>tag:captainark.net,2016-01-31:/debian-updates-with-ansible.html</id><summary type="html">&lt;p&gt;I've recently bought a &lt;a href="http://www8.hp.com/us/en/products/proliant-servers/product-detail.html?oid=5379860"&gt;HP Proliant Microserver Gen8&lt;/a&gt; to play around with LXC and try new stuff.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;I ended …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I've recently bought a &lt;a href="http://www8.hp.com/us/en/products/proliant-servers/product-detail.html?oid=5379860"&gt;HP Proliant Microserver Gen8&lt;/a&gt; to play around with LXC and try new stuff.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;I ended up looking at &lt;a href="http://www.ansible.com/"&gt;Ansible&lt;/a&gt; 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.&lt;/p&gt;
&lt;p&gt;I figured I'd share the playbook I use to update the Debian packages !&lt;/p&gt;
@ -693,7 +700,8 @@ bind &amp;#39;&amp;quot;&amp;#39; choose-window
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;That's all ! Please leave a comment if you've found this playbook helpful !&lt;/p&gt;</summary></entry><entry><title>Private Git Repo</title><link href="https://captainark.net/private-git-repo.html" rel="alternate"></link><published>2016-01-31T00:00:00+01:00</published><author><name>Antoine Joubert</name></author><id>tag:captainark.net,2016-01-31:private-git-repo.html</id><summary type="html">&lt;p&gt;I've decided to migrate this blog to &lt;a href="http://blog.getpelican.com/"&gt;Pelican&lt;/a&gt;. I've been playing around with it over the week-end, and it turns out to be way easier to manage than &lt;a href="https://jekyllrb.com/"&gt;Jekyll&lt;/a&gt;. Themes are much easier to install and configure, so it ends up looking better as well !&lt;/p&gt;
&lt;p&gt;That's all ! Please leave a comment if you've found this playbook helpful !&lt;/p&gt;</content></entry><entry><title>Private Git Repo</title><link href="https://captainark.net/private-git-repo.html" rel="alternate"></link><published>2016-01-31T00:00:00+01:00</published><updated>2016-01-31T00:00:00+01:00</updated><author><name>Antoine Joubert</name></author><id>tag:captainark.net,2016-01-31:/private-git-repo.html</id><summary type="html">&lt;p&gt;I've decided to migrate this blog to &lt;a href="http://blog.getpelican.com/"&gt;Pelican&lt;/a&gt;. I've been playing around with it over the week-end, and it turns out to be way easier to manage than &lt;a href="https://jekyllrb.com/"&gt;Jekyll&lt;/a&gt;. Themes are much easier to install and configure, so it ends up looking better as well !&lt;/p&gt;
&lt;p&gt;Since I'm basically recreating this …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I've decided to migrate this blog to &lt;a href="http://blog.getpelican.com/"&gt;Pelican&lt;/a&gt;. I've been playing around with it over the week-end, and it turns out to be way easier to manage than &lt;a href="https://jekyllrb.com/"&gt;Jekyll&lt;/a&gt;. Themes are much easier to install and configure, so it ends up looking better as well !&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;Setting up your own private git repo is pretty easy to achieve and is already well-documented on the &lt;a href="https://git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server"&gt;Git&lt;/a&gt; website.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
@ -701,7 +709,7 @@ bind &amp;#39;&amp;quot;&amp;#39; choose-window
&lt;h2&gt;SSH Keys&lt;/h2&gt;
&lt;p&gt;If you don't have one already, you'll need a ssh-key to connect to the git repo.&lt;/p&gt;
&lt;p&gt;On your computer, in a shell, as your usual user :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;ssh-keygen -t rsa -b 3072
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;ssh-keygen -t rsa -b &lt;span class="m"&gt;3072&lt;/span&gt;
Generating public/private rsa key pair.
Enter file in which to save the key &lt;span class="o"&gt;(&lt;/span&gt;/home/user/.ssh/id_rsa&lt;span class="o"&gt;)&lt;/span&gt;:
Enter passphrase &lt;span class="o"&gt;(&lt;/span&gt;empty &lt;span class="k"&gt;for&lt;/span&gt; no passphrase&lt;span class="o"&gt;)&lt;/span&gt;:
@ -715,7 +723,7 @@ The key fingerprint is:
&lt;p&gt;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 &lt;code&gt;ssh-add&lt;/code&gt; command, so you won't have to type it every time you want to connect to a host.&lt;/p&gt;
&lt;p&gt;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) :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;sudo -H -u www-data ssh-keygen -t rsa -b 3072
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;sudo -H -u www-data ssh-keygen -t rsa -b &lt;span class="m"&gt;3072&lt;/span&gt;
Generating public/private rsa key pair.
Enter file in which to save the key &lt;span class="o"&gt;(&lt;/span&gt;/var/www/.ssh/id_rsa&lt;span class="o"&gt;)&lt;/span&gt;:
Enter passphrase &lt;span class="o"&gt;(&lt;/span&gt;empty &lt;span class="k"&gt;for&lt;/span&gt; no passphrase&lt;span class="o"&gt;)&lt;/span&gt;:
@ -792,11 +800,11 @@ git push origin master
&lt;p&gt;Please note that you'll need to edit &lt;strong&gt;git.captainark.net&lt;/strong&gt; to the FQDN or IP of your git server, and &lt;strong&gt;captainarkdotnet.git&lt;/strong&gt; to the name of the git project on your server.&lt;/p&gt;
&lt;p&gt;If everything went well, the last command should give you the following output :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;Counting objects: 69, &lt;span class="k"&gt;done&lt;/span&gt;.
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;Counting objects: &lt;span class="m"&gt;69&lt;/span&gt;, &lt;span class="k"&gt;done&lt;/span&gt;.
Delta compression using up to &lt;span class="m"&gt;4&lt;/span&gt; threads.
Compressing objects: 100% &lt;span class="o"&gt;(&lt;/span&gt;64/64&lt;span class="o"&gt;)&lt;/span&gt;, &lt;span class="k"&gt;done&lt;/span&gt;.
Writing objects: 100% &lt;span class="o"&gt;(&lt;/span&gt;69/69&lt;span class="o"&gt;)&lt;/span&gt;, 1.01 MiB &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; bytes/s, &lt;span class="k"&gt;done&lt;/span&gt;.
Total &lt;span class="m"&gt;69&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;delta 15&lt;span class="o"&gt;)&lt;/span&gt;, reused &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;delta 0&lt;span class="o"&gt;)&lt;/span&gt;
Compressing objects: &lt;span class="m"&gt;100&lt;/span&gt;% &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;64&lt;/span&gt;/64&lt;span class="o"&gt;)&lt;/span&gt;, &lt;span class="k"&gt;done&lt;/span&gt;.
Writing objects: &lt;span class="m"&gt;100&lt;/span&gt;% &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;69&lt;/span&gt;/69&lt;span class="o"&gt;)&lt;/span&gt;, &lt;span class="m"&gt;1&lt;/span&gt;.01 MiB &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; bytes/s, &lt;span class="k"&gt;done&lt;/span&gt;.
Total &lt;span class="m"&gt;69&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;delta &lt;span class="m"&gt;15&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;, reused &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;delta &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
To git@git.captainark.net:captainarkdotnet.git
* &lt;span class="o"&gt;[&lt;/span&gt;new branch&lt;span class="o"&gt;]&lt;/span&gt; master -&amp;gt; master
&lt;/pre&gt;&lt;/div&gt;
@ -812,11 +820,11 @@ sudo -H -u www-data git clone git@git.captainark.net:captainarkdotnet.git
&lt;p&gt;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 :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;Cloning into &lt;span class="s1"&gt;&amp;#39;captainarkdotnet&amp;#39;&lt;/span&gt;...
remote: Counting objects: 70, &lt;span class="k"&gt;done&lt;/span&gt;.
remote: Compressing objects: 100% &lt;span class="o"&gt;(&lt;/span&gt;65/65&lt;span class="o"&gt;)&lt;/span&gt;, &lt;span class="k"&gt;done&lt;/span&gt;.
remote: Total &lt;span class="m"&gt;70&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;delta 16&lt;span class="o"&gt;)&lt;/span&gt;, reused &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;delta 0&lt;span class="o"&gt;)&lt;/span&gt;
Receiving objects: 100% &lt;span class="o"&gt;(&lt;/span&gt;70/70&lt;span class="o"&gt;)&lt;/span&gt;, 1.01 MiB &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; bytes/s, &lt;span class="k"&gt;done&lt;/span&gt;.
Resolving deltas: 100% &lt;span class="o"&gt;(&lt;/span&gt;16/16&lt;span class="o"&gt;)&lt;/span&gt;, &lt;span class="k"&gt;done&lt;/span&gt;.
remote: Counting objects: &lt;span class="m"&gt;70&lt;/span&gt;, &lt;span class="k"&gt;done&lt;/span&gt;.
remote: Compressing objects: &lt;span class="m"&gt;100&lt;/span&gt;% &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;65&lt;/span&gt;/65&lt;span class="o"&gt;)&lt;/span&gt;, &lt;span class="k"&gt;done&lt;/span&gt;.
remote: Total &lt;span class="m"&gt;70&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;delta &lt;span class="m"&gt;16&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;, reused &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;delta &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
Receiving objects: &lt;span class="m"&gt;100&lt;/span&gt;% &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;70&lt;/span&gt;/70&lt;span class="o"&gt;)&lt;/span&gt;, &lt;span class="m"&gt;1&lt;/span&gt;.01 MiB &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; bytes/s, &lt;span class="k"&gt;done&lt;/span&gt;.
Resolving deltas: &lt;span class="m"&gt;100&lt;/span&gt;% &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="m"&gt;16&lt;/span&gt;/16&lt;span class="o"&gt;)&lt;/span&gt;, &lt;span class="k"&gt;done&lt;/span&gt;.
Checking connectivity... &lt;span class="k"&gt;done&lt;/span&gt;.
&lt;/pre&gt;&lt;/div&gt;
@ -833,7 +841,10 @@ Checking connectivity... &lt;span class="k"&gt;done&lt;/span&gt;.
&lt;li&gt;once a branch has been copied locally, you can switch to it with the &lt;code&gt;git checkout {branch}&lt;/code&gt; command.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more information on git a command, use &lt;code&gt;man git-{command}&lt;/code&gt; !&lt;/p&gt;
&lt;p&gt;If you've found this tutorial in any way helpful, please feel free to leave a comment !&lt;/p&gt;</summary></entry><entry><title>Flexget init script</title><link href="https://captainark.net/flexget-init-script.html" rel="alternate"></link><published>2015-05-05T00:00:00+02:00</published><author><name>Antoine Joubert</name></author><id>tag:captainark.net,2015-05-05:flexget-init-script.html</id><summary type="html">&lt;p&gt;I've been using &lt;a href="http://flexget.com/"&gt;Flexget&lt;/a&gt; for the past two years or so as a download automator.&lt;/p&gt;
&lt;p&gt;If you've found this tutorial in any way helpful, please feel free to leave a comment !&lt;/p&gt;</content></entry><entry><title>Flexget init script</title><link href="https://captainark.net/flexget-init-script.html" rel="alternate"></link><published>2015-05-05T00:00:00+02:00</published><updated>2015-05-05T00:00:00+02:00</updated><author><name>Antoine Joubert</name></author><id>tag:captainark.net,2015-05-05:/flexget-init-script.html</id><summary type="html">&lt;p&gt;I've been using &lt;a href="http://flexget.com/"&gt;Flexget&lt;/a&gt; for the past two years or so as a download automator.&lt;/p&gt;
&lt;p&gt;Since I wrote an &lt;a href="http://flexget.com/wiki/Daemon/Startup#InsservscriptDebiancompatible"&gt;init script&lt;/a&gt; for it a while back, and it is compatible with Debian Jessie / systemd, I figured I'd share it here.&lt;/p&gt;
&lt;h2&gt;The script&lt;/h2&gt;
&lt;p&gt;All of the following should be done as …&lt;/p&gt;</summary><content type="html">&lt;p&gt;I've been using &lt;a href="http://flexget.com/"&gt;Flexget&lt;/a&gt; for the past two years or so as a download automator.&lt;/p&gt;
&lt;p&gt;Since I wrote an &lt;a href="http://flexget.com/wiki/Daemon/Startup#InsservscriptDebiancompatible"&gt;init script&lt;/a&gt; for it a while back, and it is compatible with Debian Jessie / systemd, I figured I'd share it here.&lt;/p&gt;
&lt;h2&gt;The script&lt;/h2&gt;
&lt;p&gt;All of the following should be done as the root user.&lt;/p&gt;
@ -900,7 +911,7 @@ Checking connectivity... &lt;span class="k"&gt;done&lt;/span&gt;.
&lt;span class="c1"&gt;# Exit if flexget not installed&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; ! -x &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$DAEMON&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
log_action_msg &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$DESC&lt;/span&gt;&lt;span class="s2"&gt;: Could not find flexget executable. Exiting.&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;exit&lt;/span&gt; 2
&lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="c1"&gt;# Read configuration variables&lt;/span&gt;
@ -908,13 +919,13 @@ Checking connectivity... &lt;span class="k"&gt;done&lt;/span&gt;.
. /etc/default/&lt;span class="nv"&gt;$NAME&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;
log_action_msg &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$DESC&lt;/span&gt;&lt;span class="s2"&gt;: /etc/default/&lt;/span&gt;&lt;span class="nv"&gt;$NAME&lt;/span&gt;&lt;span class="s2"&gt; not found. Exiting.&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;exit&lt;/span&gt; 2
&lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="c1"&gt;# Exit if FGUSER has not been set in /etc/default/flexget&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; -z &lt;span class="nv"&gt;$FGUSER&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
log_action_msg &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$DESC&lt;/span&gt;&lt;span class="s2"&gt;: FGUSER not set in /etc/default/&lt;/span&gt;&lt;span class="nv"&gt;$NAME&lt;/span&gt;&lt;span class="s2"&gt;. Exiting.&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;exit&lt;/span&gt; 2
&lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="c1"&gt;# Function to verify if flexget is already running&lt;/span&gt;
@ -928,11 +939,11 @@ run_check&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&
end_log&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$RETVAL&lt;/span&gt; -eq &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
log_end_msg 0
&lt;span class="k"&gt;return&lt;/span&gt; 0
log_end_msg &lt;span class="m"&gt;0&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;
log_end_msg 1
&lt;span class="nb"&gt;exit&lt;/span&gt; 1
log_end_msg &lt;span class="m"&gt;1&lt;/span&gt;
&lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
@ -965,7 +976,7 @@ start_flexget&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/s
run_check
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$RETVAL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
log_action_msg &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$DESC&lt;/span&gt;&lt;span class="s2"&gt;: Already running with PID &lt;/span&gt;&lt;span class="k"&gt;$(&lt;/span&gt;cat &lt;span class="nv"&gt;$PIDFILE&lt;/span&gt;&lt;span class="k"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;. Aborting.&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;exit&lt;/span&gt; 2
&lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;
conf_check
log_daemon_msg &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$DESC&lt;/span&gt;&lt;span class="s2"&gt;: Starting the daemon.&amp;quot;&lt;/span&gt;
@ -980,13 +991,13 @@ stop_flexget&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/sp
run_check
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$RETVAL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
log_daemon_msg &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$DESC&lt;/span&gt;&lt;span class="s2"&gt;: Stopping the daemon.&amp;quot;&lt;/span&gt;
start-stop-daemon --stop --quiet --chuid &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$FGUSER&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; --pidfile &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$PIDFILE&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; --retry 30
start-stop-daemon --stop --quiet --chuid &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$FGUSER&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; --pidfile &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$PIDFILE&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; --retry &lt;span class="m"&gt;30&lt;/span&gt;
&lt;span class="nv"&gt;RETVAL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$?&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt; -e &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$PIDFILE&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; rm -f &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$PIDFILE&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;
end_log
&lt;span class="k"&gt;else&lt;/span&gt;
log_action_msg &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="nv"&gt;$DESC&lt;/span&gt;&lt;span class="s2"&gt;: Not currently running. Aborting.&amp;quot;&lt;/span&gt;
&lt;span class="nb"&gt;exit&lt;/span&gt; 2
&lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
@ -1018,7 +1029,7 @@ status_flexget&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/
&lt;span class="p"&gt;;;&lt;/span&gt;
&lt;span class="k"&gt;esac&lt;/span&gt;
&lt;span class="nb"&gt;exit&lt;/span&gt; 0
&lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
@ -1061,7 +1072,20 @@ service flexget status
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;That's all ! If you are using this script, please let me know in the comment section below !&lt;/p&gt;</summary></entry><entry><title>Setting up a mail server</title><link href="https://captainark.net/setting-up-a-mail-server.html" rel="alternate"></link><published>2015-04-24T00:00:00+02:00</published><author><name>Antoine Joubert</name></author><id>tag:captainark.net,2015-04-24:setting-up-a-mail-server.html</id><summary type="html">&lt;p&gt;In this first tutorial, I'll explain how I've configured my mail server using the following :&lt;/p&gt;
&lt;p&gt;That's all ! If you are using this script, please let me know in the comment section below !&lt;/p&gt;</content></entry><entry><title>Setting up a mail server</title><link href="https://captainark.net/setting-up-a-mail-server.html" rel="alternate"></link><published>2015-04-24T00:00:00+02:00</published><updated>2015-04-24T00:00:00+02:00</updated><author><name>Antoine Joubert</name></author><id>tag:captainark.net,2015-04-24:/setting-up-a-mail-server.html</id><summary type="html">&lt;p&gt;In this first tutorial, I'll explain how I've configured my mail server using the following :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A server running Linux Debian (jessie) ;&lt;/li&gt;
&lt;li&gt;Postfix ;&lt;/li&gt;
&lt;li&gt;Postfix-policyd-spf-python ;&lt;/li&gt;
&lt;li&gt;Dovecot ;&lt;/li&gt;
&lt;li&gt;Spamassassin ;&lt;/li&gt;
&lt;li&gt;OpenDKIM ;&lt;/li&gt;
&lt;li&gt;OpenDMARC ;&lt;/li&gt;
&lt;li&gt;Monit ;&lt;/li&gt;
&lt;li&gt;Rainloop.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I'm assuming you have some basic knowledge of Linux and DNS configuration.&lt;/p&gt;
&lt;p&gt;You can host this server at home, but you …&lt;/p&gt;</summary><content type="html">&lt;p&gt;In this first tutorial, I'll explain how I've configured my mail server using the following :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A server running Linux Debian (jessie) ;&lt;/li&gt;
&lt;li&gt;Postfix ;&lt;/li&gt;
@ -1243,8 +1267,8 @@ http://www.startssl.com/certs/sub.class1.server.ca.pem
&lt;p&gt;The last thing we have to do here is to generate Diffie-Hellman keys for Perfect Forward Secrecy (PFS) :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;openssl gendh -out /etc/postfix/dh_512.pem -2 512
openssl gendh -out /etc/postfix/dh_1024.pem -2 1024
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;openssl gendh -out /etc/postfix/dh_512.pem -2 &lt;span class="m"&gt;512&lt;/span&gt;
openssl gendh -out /etc/postfix/dh_1024.pem -2 &lt;span class="m"&gt;1024&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
@ -1722,8 +1746,8 @@ Authserv_Id = &amp;quot;&amp;lt;server&amp;#39;s FQDN&amp;gt;&amp;quot;
&lt;p&gt;Our server is now checking other mail server's SPF records.&lt;/p&gt;
&lt;p&gt;To make sure that it is working, send yourself an email from another provider. You should see the following header in it :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nt"&gt;Authentication-Results&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;myserver&lt;/span&gt;&lt;span class="nc"&gt;.captainark.net&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="nt"&gt;spf&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;pass&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;sender&lt;/span&gt; &lt;span class="nt"&gt;SPF&lt;/span&gt; &lt;span class="nt"&gt;authorized&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="cp"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;...&lt;/span&gt;&lt;span class="cp"&gt;]&lt;/span&gt; &lt;span class="nt"&gt;receiver&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;example&lt;/span&gt;&lt;span class="k"&gt;@captainark&lt;/span&gt;&lt;span class="nc"&gt;.net&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nt"&gt;Authentication-Results&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;myserver&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;captainark&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;net&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="nt"&gt;spf&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;pass&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;sender&lt;/span&gt; &lt;span class="nt"&gt;SPF&lt;/span&gt; &lt;span class="nt"&gt;authorized&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="cp"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;...&lt;/span&gt;&lt;span class="cp"&gt;]&lt;/span&gt; &lt;span class="nt"&gt;receiver&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;example&lt;/span&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="k"&gt;captainark&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;net&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
@ -1901,7 +1925,7 @@ systemctl restart postfix
&lt;p&gt;You should now see the following headers in your incoming emails :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nt"&gt;Authentication-Results&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;myserver&lt;/span&gt;&lt;span class="nc"&gt;.captainark.net&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="nt"&gt;dmarc&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;pass&lt;/span&gt; &lt;span class="nt"&gt;header&lt;/span&gt;&lt;span class="nc"&gt;.from&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;gmail&lt;/span&gt;&lt;span class="nc"&gt;.com&lt;/span&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="nt"&gt;Authentication-Results&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;myserver&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;captainark&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;net&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; &lt;span class="nt"&gt;dmarc&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;pass&lt;/span&gt; &lt;span class="nt"&gt;header&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;from&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;gmail&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;com&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
@ -2016,4 +2040,4 @@ Process &amp;#39;opendmarc&amp;#39; Running
&lt;li&gt;&lt;a href="https://www.digitalocean.com/community/tutorials/how-to-configure-a-mail-server-using-postfix-dovecot-mysql-and-spamassasin"&gt;A third tutorial from DigitalOcean&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy"&gt;A tutorial on setting up OpenDKIM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://guillaume.vaillant.me/?p=481"&gt;A tutorial on setting up OpenDMARC&lt;/a&gt; (in french)&lt;/li&gt;
&lt;/ul&gt;</summary></entry></feed>
&lt;/ul&gt;</content></entry></feed>

View File

@ -21,7 +21,7 @@
<!-- Custom Fonts -->
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href='https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
@ -297,8 +297,8 @@ http://www.startssl.com/certs/sub.class1.server.ca.pem
<p>The last thing we have to do here is to generate Diffie-Hellman keys for Perfect Forward Secrecy (PFS) :</p>
<div class="highlight"><pre><span></span>openssl gendh -out /etc/postfix/dh_512.pem -2 512
openssl gendh -out /etc/postfix/dh_1024.pem -2 1024
<div class="highlight"><pre><span></span>openssl gendh -out /etc/postfix/dh_512.pem -2 <span class="m">512</span>
openssl gendh -out /etc/postfix/dh_1024.pem -2 <span class="m">1024</span>
</pre></div>
@ -776,8 +776,8 @@ Authserv_Id = &quot;&lt;server&#39;s FQDN&gt;&quot;
<p>Our server is now checking other mail server's SPF records.</p>
<p>To make sure that it is working, send yourself an email from another provider. You should see the following header in it :</p>
<div class="highlight"><pre><span></span><span class="nt">Authentication-Results</span><span class="o">:</span> <span class="nt">myserver</span><span class="nc">.captainark.net</span><span class="o">;</span> <span class="nt">spf</span><span class="o">=</span><span class="nt">pass</span> <span class="o">(</span><span class="nt">sender</span> <span class="nt">SPF</span> <span class="nt">authorized</span><span class="o">)</span>
<span class="cp">[</span><span class="nx">...</span><span class="cp">]</span> <span class="nt">receiver</span><span class="o">=</span><span class="nt">example</span><span class="k">@captainark</span><span class="nc">.net</span><span class="o">)</span>
<div class="highlight"><pre><span></span><span class="nt">Authentication-Results</span><span class="o">:</span> <span class="nt">myserver</span><span class="p">.</span><span class="nc">captainark</span><span class="p">.</span><span class="nc">net</span><span class="o">;</span> <span class="nt">spf</span><span class="o">=</span><span class="nt">pass</span> <span class="o">(</span><span class="nt">sender</span> <span class="nt">SPF</span> <span class="nt">authorized</span><span class="o">)</span>
<span class="cp">[</span><span class="nx">...</span><span class="cp">]</span> <span class="nt">receiver</span><span class="o">=</span><span class="nt">example</span><span class="p">@</span><span class="k">captainark</span><span class="p">.</span><span class="nc">net</span><span class="o">)</span>
</pre></div>
@ -955,7 +955,7 @@ systemctl restart postfix
<p>You should now see the following headers in your incoming emails :</p>
<div class="highlight"><pre><span></span><span class="nt">Authentication-Results</span><span class="o">:</span> <span class="nt">myserver</span><span class="nc">.captainark.net</span><span class="o">;</span> <span class="nt">dmarc</span><span class="o">=</span><span class="nt">pass</span> <span class="nt">header</span><span class="nc">.from</span><span class="o">=</span><span class="nt">gmail</span><span class="nc">.com</span>
<div class="highlight"><pre><span></span><span class="nt">Authentication-Results</span><span class="o">:</span> <span class="nt">myserver</span><span class="p">.</span><span class="nc">captainark</span><span class="p">.</span><span class="nc">net</span><span class="o">;</span> <span class="nt">dmarc</span><span class="o">=</span><span class="nt">pass</span> <span class="nt">header</span><span class="p">.</span><span class="nc">from</span><span class="o">=</span><span class="nt">gmail</span><span class="p">.</span><span class="nc">com</span>
</pre></div>
@ -1074,9 +1074,6 @@ Process &#39;opendmarc&#39; Running
</article>
<hr>
<div class="sharing">
</div>
<hr>
<div class="comments">
@ -1157,14 +1154,14 @@ Process &#39;opendmarc&#39; Running
</ul>
<p class="copyright text-muted">
Blog powered by <a href="http://getpelican.com">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.
which takes great advantage of <a href="http://python.org">Python</a>. <br /> &copy; Antoine Joubert
</p> </div>
</div>
</div>
</footer>
<!-- jQuery -->
<script src="https://captainark.net/theme/js/jquery.js"></script>
<script src="https://captainark.net/theme/js/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="https://captainark.net/theme/js/bootstrap.min.js"></script>
@ -1173,13 +1170,16 @@ Process &#39;opendmarc&#39; Running
<script src="https://captainark.net/theme/js/clean-blog.min.js"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-53658366-1']);
_gaq.push(['_trackPageview']);
var pkBaseURL = "https://nibelungvalesti.net/stats";
var _paq = _paq || [];
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
var u=(("https:" == document.location.protocol) ? "https" : "http")+"://"+pkBaseURL+"/";
_paq.push(["setTrackerUrl", u+"piwik.php"]);
_paq.push(["setSiteId", "1"]);
var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
})();
</script>
<script type="text/javascript">

View File

@ -21,7 +21,7 @@
<!-- Custom Fonts -->
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href='https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
@ -153,14 +153,14 @@
</ul>
<p class="copyright text-muted">
Blog powered by <a href="http://getpelican.com">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.
which takes great advantage of <a href="http://python.org">Python</a>. <br /> &copy; Antoine Joubert
</p> </div>
</div>
</div>
</footer>
<!-- jQuery -->
<script src="https://captainark.net/theme/js/jquery.js"></script>
<script src="https://captainark.net/theme/js/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="https://captainark.net/theme/js/bootstrap.min.js"></script>
@ -169,13 +169,16 @@
<script src="https://captainark.net/theme/js/clean-blog.min.js"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-53658366-1']);
_gaq.push(['_trackPageview']);
var pkBaseURL = "https://nibelungvalesti.net/stats";
var _paq = _paq || [];
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
var u=(("https:" == document.location.protocol) ? "https" : "http")+"://"+pkBaseURL+"/";
_paq.push(["setTrackerUrl", u+"piwik.php"]);
_paq.push(["setSiteId", "1"]);
var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
})();
</script>
<script type="text/javascript">

0
output/theme/css/bootstrap.css vendored Executable file → Normal file
View File

0
output/theme/css/bootstrap.min.css vendored Executable file → Normal file
View File

11
output/theme/css/clean-blog.css Executable file → Normal file
View File

@ -7,7 +7,7 @@
body {
font-family: 'Open Sans', 'Lora','Times New Roman',serif;
font-size: 18px;
font-weight: 300;
font-weight: 500;
color: #404040;
}
@ -28,11 +28,11 @@ h6 {
font-weight: 800;
}
a {
color: #404040;
color: #0085a1;
}
a:hover,
a:focus {
color: #0085a1;
color: #0057a2;
}
a img:hover,
a img:focus {
@ -44,6 +44,7 @@ blockquote {
}
pre {
background-color: transparent;
font-size: 16px;
}
hr.small {
max-width: 100px;
@ -403,3 +404,7 @@ img::-moz-selection {
body {
webkit-tap-highlight-color: #0085a1;
}
.article-summary {
padding-top:10px;
padding-bottom: 10px;
}

2
output/theme/css/clean-blog.min.css vendored Executable file → Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,38 +1 @@
/*
Darkly Pygments Theme
(c) 2014 Sourcey
http://sourcey.com
*/
pre {
white-space: pre;
overflow: auto;
word-wrap: normal; /* horizontal scrolling */
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
padding: 20px;
background: #343642;
color: #C1C2C3;
}
.hll { background-color: #ffc; }
.gd { color: #2e3436; background-color: #0e1416; }
.gr { color: #eeeeec; background-color: #c00; }
.gi { color: #babdb6; background-color: #1f2b2d; }
.go { color: #2c3032; background-color: #2c3032; }
.kt { color: #e3e7df; }
.ni { color: #888a85; }
.c,.cm,.c1,.cs { color: #8D9684; }
.err,.g,.l,.n,.x,.p,.ge,
.gp,.gs,.gt,.ld,.s,.nc,.nd,
.ne,.nl,.nn,.nx,.py,.ow,.w,.sb,
.sc,.sd,.s2,.se,.sh,.si,.sx,.sr,
.s1,.ss,.bp { color: #C1C2C3; }
.k,.kc,.kd,.kn,.kp,.kr,
.nt { color: #729fcf; }
.cp,.gh,.gu,.na,.nf { color: #E9A94B ; }
.m,.nb,.no,.mf,.mh,.mi,.mo,
.il { color: #8ae234; }
.o { color: #989DAA; }
.nv,.vc,.vg,.vi { color: #fff; }
pre{white-space:pre;overflow:auto;word-wrap:normal;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;padding:20px;background:#343642;color:#C1C2C3}.hll{background-color:#ffc}.gd{color:#2e3436;background-color:#0e1416}.gr{color:#eeeeec;background-color:#c00}.gi{color:#babdb6;background-color:#1f2b2d}.go{color:#2c3032;background-color:#2c3032}.kt{color:#e3e7df}.ni{color:#888a85}.c,.cm,.c1,.cs{color:#8D9684}.err,.g,.l,.n,.x,.p,.ge,.gp,.gs,.gt,.ld,.s,.nc,.nd,.ne,.nl,.nn,.nx,.py,.ow,.w,.sb,.sc,.sd,.s2,.se,.sh,.si,.sx,.sr,.s1,.ss,.bp{color:#C1C2C3}.k,.kc,.kd,.kn,.kp,.kr,.nt{color:#729fcf}.cp,.gh,.gu,.na,.nf{color:#E9A94B}.m,.nb,.no,.mf,.mh,.mi,.mo,.il{color:#8ae234}.o{color:#989DAA}.nv,.vc,.vg,.vi{color:#fff}

View File

@ -1,61 +1 @@
.hll { background-color: #ffffcc }
.c { color: #999988; font-style: italic } /* Comment */
.err { color: #a61717; background-color: #e3d2d2 } /* Error */
.k { color: #000000; font-weight: bold } /* Keyword */
.o { color: #000000; font-weight: bold } /* Operator */
.cm { color: #999988; font-style: italic } /* Comment.Multiline */
.cp { color: #999999; font-weight: bold; font-style: italic } /* Comment.Preproc */
.c1 { color: #999988; font-style: italic } /* Comment.Single */
.cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
.gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.ge { color: #000000; font-style: italic } /* Generic.Emph */
.gr { color: #aa0000 } /* Generic.Error */
.gh { color: #999999 } /* Generic.Heading */
.gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.go { color: #888888 } /* Generic.Output */
.gp { color: #555555 } /* Generic.Prompt */
.gs { font-weight: bold } /* Generic.Strong */
.gu { color: #aaaaaa } /* Generic.Subheading */
.gt { color: #aa0000 } /* Generic.Traceback */
.kc { color: #000000; font-weight: bold } /* Keyword.Constant */
.kd { color: #000000; font-weight: bold } /* Keyword.Declaration */
.kn { color: #000000; font-weight: bold } /* Keyword.Namespace */
.kp { color: #000000; font-weight: bold } /* Keyword.Pseudo */
.kr { color: #000000; font-weight: bold } /* Keyword.Reserved */
.kt { color: #445588; font-weight: bold } /* Keyword.Type */
.m { color: #009999 } /* Literal.Number */
.s { color: #d01040 } /* Literal.String */
.na { color: #008080 } /* Name.Attribute */
.nb { color: #0086B3 } /* Name.Builtin */
.nc { color: #445588; font-weight: bold } /* Name.Class */
.no { color: #008080 } /* Name.Constant */
.nd { color: #3c5d5d; font-weight: bold } /* Name.Decorator */
.ni { color: #800080 } /* Name.Entity */
.ne { color: #990000; font-weight: bold } /* Name.Exception */
.nf { color: #990000; font-weight: bold } /* Name.Function */
.nl { color: #990000; font-weight: bold } /* Name.Label */
.nn { color: #555555 } /* Name.Namespace */
.nt { color: #000080 } /* Name.Tag */
.nv { color: #008080 } /* Name.Variable */
.ow { color: #000000; font-weight: bold } /* Operator.Word */
.w { color: #bbbbbb } /* Text.Whitespace */
.mf { color: #009999 } /* Literal.Number.Float */
.mh { color: #009999 } /* Literal.Number.Hex */
.mi { color: #009999 } /* Literal.Number.Integer */
.mo { color: #009999 } /* Literal.Number.Oct */
.sb { color: #d01040 } /* Literal.String.Backtick */
.sc { color: #d01040 } /* Literal.String.Char */
.sd { color: #d01040 } /* Literal.String.Doc */
.s2 { color: #d01040 } /* Literal.String.Double */
.se { color: #d01040 } /* Literal.String.Escape */
.sh { color: #d01040 } /* Literal.String.Heredoc */
.si { color: #d01040 } /* Literal.String.Interpol */
.sx { color: #d01040 } /* Literal.String.Other */
.sr { color: #009926 } /* Literal.String.Regex */
.s1 { color: #d01040 } /* Literal.String.Single */
.ss { color: #990073 } /* Literal.String.Symbol */
.bp { color: #999999 } /* Name.Builtin.Pseudo */
.vc { color: #008080 } /* Name.Variable.Class */
.vg { color: #008080 } /* Name.Variable.Global */
.vi { color: #008080 } /* Name.Variable.Instance */
.il { color: #009999 } /* Literal.Number.Integer.Long */
.hll{background-color:#ffc}.c{color:#998;font-style:italic}.err{color:#a61717;background-color:#e3d2d2}.k{color:#000;font-weight:700}.o{color:#000;font-weight:700}.cm{color:#998;font-style:italic}.cp{color:#999;font-weight:700;font-style:italic}.c1{color:#998;font-style:italic}.cs{color:#999;font-weight:700;font-style:italic}.gd{color:#000;background-color:#fdd}.ge{color:#000;font-style:italic}.gr{color:#a00}.gh{color:#999}.gi{color:#000;background-color:#dfd}.go{color:#888}.gp{color:#555}.gs{font-weight:700}.gu{color:#aaa}.gt{color:#a00}.kc{color:#000;font-weight:700}.kd{color:#000;font-weight:700}.kn{color:#000;font-weight:700}.kp{color:#000;font-weight:700}.kr{color:#000;font-weight:700}.kt{color:#458;font-weight:700}.m{color:#099}.s{color:#d01040}.na{color:#008080}.nb{color:#0086B3}.nc{color:#458;font-weight:700}.no{color:#008080}.nd{color:#3c5d5d;font-weight:700}.ni{color:purple}.ne{color:#900;font-weight:700}.nf{color:#900;font-weight:700}.nl{color:#900;font-weight:700}.nn{color:#555}.nt{color:navy}.nv{color:#008080}.ow{color:#000;font-weight:700}.w{color:#bbb}.mf{color:#099}.mh{color:#099}.mi{color:#099}.mo{color:#099}.sb{color:#d01040}.sc{color:#d01040}.sd{color:#d01040}.s2{color:#d01040}.se{color:#d01040}.sh{color:#d01040}.si{color:#d01040}.sx{color:#d01040}.sr{color:#009926}.s1{color:#d01040}.ss{color:#990073}.bp{color:#999}.vc{color:#008080}.vg{color:#008080}.vi{color:#008080}.il{color:#099}

View File

@ -0,0 +1 @@
.highlight pre code*{white-space:nowrap}.highlight pre{overflow-x:auto}.highlight pre code{white-space:pre}.highlight pre,pre,.highlight.hll{background-color:#f8f8f8;border:1px solid #ccc;padding:6px 10px;border-radius:3px}.highlight.c{color:#999988;font-style:italic}.highlight.err{color:#a61717;background-color:#e3d2d2}.highlight.k{font-weight:bold}.highlight.o{font-weight:bold}.highlight.cm{color:#999988;font-style:italic}.highlight.cp{color:#999999;font-weight:bold}.highlight.c1{color:#999988;font-style:italic}.highlight.cs{color:#999999;font-weight:bold;font-style:italic}.highlight.gd{color:#000000;background-color:#ffdddd}.highlight.gd.x{color:#000000;background-color:#ffaaaa}.highlight.ge{font-style:italic}.highlight.gr{color:#aa0000}.highlight.gh{color:#999999}.highlight.gi{color:#000000;background-color:#ddffdd}.highlight.gi.x{color:#000000;background-color:#aaffaa}.highlight.go{color:#888888}.highlight.gp{color:#555555}.highlight.gs{font-weight:bold}.highlight.gu{color:#800080;font-weight:bold}.highlight.gt{color:#aa0000}.highlight.kc{font-weight:bold}.highlight.kd{font-weight:bold}.highlight.kn{font-weight:bold}.highlight.kp{font-weight:bold}.highlight.kr{font-weight:bold}.highlight.kt{color:#445588;font-weight:bold}.highlight.m{color:#009999}.highlight.s{color:#dd1144}.highlight.n{color:#333333}.highlight.na{color:teal}.highlight.nb{color:#0086b3}.highlight.nc{color:#445588;font-weight:bold}.highlight.no{color:teal}.highlight.ni{color:purple}.highlight.ne{color:#990000;font-weight:bold}.highlight.nf{color:#990000;font-weight:bold}.highlight.nn{color:#555555}.highlight.nt{color:navy}.highlight.nv{color:teal}.highlight.ow{font-weight:bold}.highlight.w{color:#bbbbbb}.highlight.mf{color:#009999}.highlight.mh{color:#009999}.highlight.mi{color:#009999}.highlight.mo{color:#009999}.highlight.sb{color:#dd1144}.highlight.sc{color:#dd1144}.highlight.sd{color:#dd1144}.highlight.s2{color:#dd1144}.highlight.se{color:#dd1144}.highlight.sh{color:#dd1144}.highlight.si{color:#dd1144}.highlight.sx{color:#dd1144}.highlight.sr{color:#009926}.highlight.s1{color:#dd1144}.highlight.ss{color:#990073}.highlight.bp{color:#999999}.highlight.vc{color:teal}.highlight.vg{color:teal}.highlight.vi{color:teal}.highlight.il{color:#009999}.highlight.gc{color:#999;background-color:#EAF2F5}highlight .gc { color: #999; background-color: #EAF2F5; }

View File

@ -1,80 +1 @@
/*
Monokai Pygments Theme
*/
pre {
white-space: pre;
overflow: auto;
word-wrap: normal; /* horizontal scrolling */
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
padding: 20px;
background: #343642;
color: #C1C2C3;
}
.hll { background-color: #49483e }
.c { color: #75715e } /* Comment */
.err { color: #960050; background-color: #1e0010 } /* Error */
.k { color: #66d9ef } /* Keyword */
.l { color: #ae81ff } /* Literal */
.n { color: #f8f8f2 } /* Name */
.o { color: #f92672 } /* Operator */
.p { color: #f8f8f2 } /* Punctuation */
.cm { color: #75715e } /* Comment.Multiline */
.cp { color: #75715e } /* Comment.Preproc */
.c1 { color: #75715e } /* Comment.Single */
.cs { color: #75715e } /* Comment.Special */
.ge { font-style: italic } /* Generic.Emph */
.gs { font-weight: bold } /* Generic.Strong */
.kc { color: #66d9ef } /* Keyword.Constant */
.kd { color: #66d9ef } /* Keyword.Declaration */
.kn { color: #f92672 } /* Keyword.Namespace */
.kp { color: #66d9ef } /* Keyword.Pseudo */
.kr { color: #66d9ef } /* Keyword.Reserved */
.kt { color: #66d9ef } /* Keyword.Type */
.ld { color: #e6db74 } /* Literal.Date */
.m { color: #ae81ff } /* Literal.Number */
.s { color: #e6db74 } /* Literal.String */
.na { color: #a6e22e } /* Name.Attribute */
.nb { color: #f8f8f2 } /* Name.Builtin */
.nc { color: #a6e22e } /* Name.Class */
.no { color: #66d9ef } /* Name.Constant */
.nd { color: #a6e22e } /* Name.Decorator */
.ni { color: #f8f8f2 } /* Name.Entity */
.ne { color: #a6e22e } /* Name.Exception */
.nf { color: #a6e22e } /* Name.Function */
.nl { color: #f8f8f2 } /* Name.Label */
.nn { color: #f8f8f2 } /* Name.Namespace */
.nx { color: #a6e22e } /* Name.Other */
.py { color: #f8f8f2 } /* Name.Property */
.nt { color: #f92672 } /* Name.Tag */
.nv { color: #f8f8f2 } /* Name.Variable */
.ow { color: #f92672 } /* Operator.Word */
.w { color: #f8f8f2 } /* Text.Whitespace */
.mf { color: #ae81ff } /* Literal.Number.Float */
.mh { color: #ae81ff } /* Literal.Number.Hex */
.mi { color: #ae81ff } /* Literal.Number.Integer */
.mo { color: #ae81ff } /* Literal.Number.Oct */
.sb { color: #e6db74 } /* Literal.String.Backtick */
.sc { color: #e6db74 } /* Literal.String.Char */
.sd { color: #e6db74 } /* Literal.String.Doc */
.s2 { color: #e6db74 } /* Literal.String.Double */
.se { color: #ae81ff } /* Literal.String.Escape */
.sh { color: #e6db74 } /* Literal.String.Heredoc */
.si { color: #e6db74 } /* Literal.String.Interpol */
.sx { color: #e6db74 } /* Literal.String.Other */
.sr { color: #e6db74 } /* Literal.String.Regex */
.s1 { color: #e6db74 } /* Literal.String.Single */
.ss { color: #e6db74 } /* Literal.String.Symbol */
.bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */
.vc { color: #f8f8f2 } /* Name.Variable.Class */
.vg { color: #f8f8f2 } /* Name.Variable.Global */
.vi { color: #f8f8f2 } /* Name.Variable.Instance */
.il { color: #ae81ff } /* Literal.Number.Integer.Long */
.gh { } /* Generic Heading & Diff Header */
.gu { color: #75715e; } /* Generic.Subheading & Diff Unified/Comment? */
.gd { color: #f92672; } /* Generic.Deleted & Diff Deleted */
.gi { color: #a6e22e; } /* Generic.Inserted & Diff Inserted */
pre{white-space:pre;overflow:auto;word-wrap:normal;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;padding:20px;background:#343642;color:#C1C2C3}.hll{background-color:#49483e}.c{color:#75715e}.err{color:#960050;background-color:#1e0010}.k{color:#66d9ef}.l{color:#ae81ff}.n{color:#f8f8f2}.o{color:#f92672}.p{color:#f8f8f2}.cm{color:#75715e}.cp{color:#75715e}.c1{color:#75715e}.cs{color:#75715e}.ge{font-style:italic}.gs{font-weight:700}.kc{color:#66d9ef}.kd{color:#66d9ef}.kn{color:#f92672}.kp{color:#66d9ef}.kr{color:#66d9ef}.kt{color:#66d9ef}.ld{color:#e6db74}.m{color:#ae81ff}.s{color:#e6db74}.na{color:#a6e22e}.nb{color:#f8f8f2}.nc{color:#a6e22e}.no{color:#66d9ef}.nd{color:#a6e22e}.ni{color:#f8f8f2}.ne{color:#a6e22e}.nf{color:#a6e22e}.nl{color:#f8f8f2}.nn{color:#f8f8f2}.nx{color:#a6e22e}.py{color:#f8f8f2}.nt{color:#f92672}.nv{color:#f8f8f2}.ow{color:#f92672}.w{color:#f8f8f2}.mf{color:#ae81ff}.mh{color:#ae81ff}.mi{color:#ae81ff}.mo{color:#ae81ff}.sb{color:#e6db74}.sc{color:#e6db74}.sd{color:#e6db74}.s2{color:#e6db74}.se{color:#ae81ff}.sh{color:#e6db74}.si{color:#e6db74}.sx{color:#e6db74}.sr{color:#e6db74}.s1{color:#e6db74}.ss{color:#e6db74}.bp{color:#f8f8f2}.vc{color:#f8f8f2}.vg{color:#f8f8f2}.vi{color:#f8f8f2}.il{color:#ae81ff}.gu{color:#75715e}.gd{color:#f92672}.gi{color:#a6e22e}

View File

@ -1,70 +1 @@
/*
Tomorrow Pygments Theme
*/
pre { background: #ffffff; color: #4d4d4c }
.hll { background-color: #d6d6d6 }
.c { color: #8e908c } /* Comment */
.err { color: #c82829 } /* Error */
.k { color: #8959a8 } /* Keyword */
.l { color: #f5871f } /* Literal */
.n { color: #4d4d4c } /* Name */
.o { color: #3e999f } /* Operator */
.p { color: #4d4d4c } /* Punctuation */
.cm { color: #8e908c } /* Comment.Multiline */
.cp { color: #8e908c } /* Comment.Preproc */
.c1 { color: #8e908c } /* Comment.Single */
.cs { color: #8e908c } /* Comment.Special */
.gd { color: #c82829 } /* Generic.Deleted */
.ge { font-style: italic } /* Generic.Emph */
.gh { color: #4d4d4c; font-weight: bold } /* Generic.Heading */
.gi { color: #718c00 } /* Generic.Inserted */
.gp { color: #8e908c; font-weight: bold } /* Generic.Prompt */
.gs { font-weight: bold } /* Generic.Strong */
.gu { color: #3e999f; font-weight: bold } /* Generic.Subheading */
.kc { color: #8959a8 } /* Keyword.Constant */
.kd { color: #8959a8 } /* Keyword.Declaration */
.kn { color: #3e999f } /* Keyword.Namespace */
.kp { color: #8959a8 } /* Keyword.Pseudo */
.kr { color: #8959a8 } /* Keyword.Reserved */
.kt { color: #eab700 } /* Keyword.Type */
.ld { color: #718c00 } /* Literal.Date */
.m { color: #f5871f } /* Literal.Number */
.s { color: #718c00 } /* Literal.String */
.na { color: #4271ae } /* Name.Attribute */
.nb { color: #4d4d4c } /* Name.Builtin */
.nc { color: #eab700 } /* Name.Class */
.no { color: #c82829 } /* Name.Constant */
.nd { color: #3e999f } /* Name.Decorator */
.ni { color: #4d4d4c } /* Name.Entity */
.ne { color: #c82829 } /* Name.Exception */
.nf { color: #4271ae } /* Name.Function */
.nl { color: #4d4d4c } /* Name.Label */
.nn { color: #eab700 } /* Name.Namespace */
.nx { color: #4271ae } /* Name.Other */
.py { color: #4d4d4c } /* Name.Property */
.nt { color: #3e999f } /* Name.Tag */
.nv { color: #c82829 } /* Name.Variable */
.ow { color: #3e999f } /* Operator.Word */
.w { color: #4d4d4c } /* Text.Whitespace */
.mf { color: #f5871f } /* Literal.Number.Float */
.mh { color: #f5871f } /* Literal.Number.Hex */
.mi { color: #f5871f } /* Literal.Number.Integer */
.mo { color: #f5871f } /* Literal.Number.Oct */
.sb { color: #718c00 } /* Literal.String.Backtick */
.sc { color: #4d4d4c } /* Literal.String.Char */
.sd { color: #8e908c } /* Literal.String.Doc */
.s2 { color: #718c00 } /* Literal.String.Double */
.se { color: #f5871f } /* Literal.String.Escape */
.sh { color: #718c00 } /* Literal.String.Heredoc */
.si { color: #f5871f } /* Literal.String.Interpol */
.sx { color: #718c00 } /* Literal.String.Other */
.sr { color: #718c00 } /* Literal.String.Regex */
.s1 { color: #718c00 } /* Literal.String.Single */
.ss { color: #718c00 } /* Literal.String.Symbol */
.bp { color: #4d4d4c } /* Name.Builtin.Pseudo */
.vc { color: #c82829 } /* Name.Variable.Class */
.vg { color: #c82829 } /* Name.Variable.Global */
.vi { color: #c82829 } /* Name.Variable.Instance */
.il { color: #f5871f } /* Literal.Number.Integer.Long */
pre{background:#fff;color:#4d4d4c}.hll{background-color:#d6d6d6}.c{color:#8e908c}.err{color:#c82829}.k{color:#8959a8}.l{color:#f5871f}.n{color:#4d4d4c}.o{color:#3e999f}.p{color:#4d4d4c}.cm{color:#8e908c}.cp{color:#8e908c}.c1{color:#8e908c}.cs{color:#8e908c}.gd{color:#c82829}.ge{font-style:italic}.gh{color:#4d4d4c;font-weight:700}.gi{color:#718c00}.gp{color:#8e908c;font-weight:700}.gs{font-weight:700}.gu{color:#3e999f;font-weight:700}.kc{color:#8959a8}.kd{color:#8959a8}.kn{color:#3e999f}.kp{color:#8959a8}.kr{color:#8959a8}.kt{color:#eab700}.ld{color:#718c00}.m{color:#f5871f}.s{color:#718c00}.na{color:#4271ae}.nb{color:#4d4d4c}.nc{color:#eab700}.no{color:#c82829}.nd{color:#3e999f}.ni{color:#4d4d4c}.ne{color:#c82829}.nf{color:#4271ae}.nl{color:#4d4d4c}.nn{color:#eab700}.nx{color:#4271ae}.py{color:#4d4d4c}.nt{color:#3e999f}.nv{color:#c82829}.ow{color:#3e999f}.w{color:#4d4d4c}.mf{color:#f5871f}.mh{color:#f5871f}.mi{color:#f5871f}.mo{color:#f5871f}.sb{color:#718c00}.sc{color:#4d4d4c}.sd{color:#8e908c}.s2{color:#718c00}.se{color:#f5871f}.sh{color:#718c00}.si{color:#f5871f}.sx{color:#718c00}.sr{color:#718c00}.s1{color:#718c00}.ss{color:#718c00}.bp{color:#4d4d4c}.vc{color:#c82829}.vg{color:#c82829}.vi{color:#c82829}.il{color:#f5871f}

View File

@ -1,70 +1 @@
/*
Tomorrow Night Pygments Theme
*/
pre { background: #1d1f21; color: #c5c8c6 }
.hll { background-color: #373b41 }
.c { color: #969896 } /* Comment */
.err { color: #cc6666 } /* Error */
.k { color: #b294bb } /* Keyword */
.l { color: #de935f } /* Literal */
.n { color: #c5c8c6 } /* Name */
.o { color: #8abeb7 } /* Operator */
.p { color: #c5c8c6 } /* Punctuation */
.cm { color: #969896 } /* Comment.Multiline */
.cp { color: #969896 } /* Comment.Preproc */
.c1 { color: #969896 } /* Comment.Single */
.cs { color: #969896 } /* Comment.Special */
.gd { color: #cc6666 } /* Generic.Deleted */
.ge { font-style: italic } /* Generic.Emph */
.gh { color: #c5c8c6; font-weight: bold } /* Generic.Heading */
.gi { color: #b5bd68 } /* Generic.Inserted */
.gp { color: #969896; font-weight: bold } /* Generic.Prompt */
.gs { font-weight: bold } /* Generic.Strong */
.gu { color: #8abeb7; font-weight: bold } /* Generic.Subheading */
.kc { color: #b294bb } /* Keyword.Constant */
.kd { color: #b294bb } /* Keyword.Declaration */
.kn { color: #8abeb7 } /* Keyword.Namespace */
.kp { color: #b294bb } /* Keyword.Pseudo */
.kr { color: #b294bb } /* Keyword.Reserved */
.kt { color: #f0c674 } /* Keyword.Type */
.ld { color: #b5bd68 } /* Literal.Date */
.m { color: #de935f } /* Literal.Number */
.s { color: #b5bd68 } /* Literal.String */
.na { color: #81a2be } /* Name.Attribute */
.nb { color: #c5c8c6 } /* Name.Builtin */
.nc { color: #f0c674 } /* Name.Class */
.no { color: #cc6666 } /* Name.Constant */
.nd { color: #8abeb7 } /* Name.Decorator */
.ni { color: #c5c8c6 } /* Name.Entity */
.ne { color: #cc6666 } /* Name.Exception */
.nf { color: #81a2be } /* Name.Function */
.nl { color: #c5c8c6 } /* Name.Label */
.nn { color: #f0c674 } /* Name.Namespace */
.nx { color: #81a2be } /* Name.Other */
.py { color: #c5c8c6 } /* Name.Property */
.nt { color: #8abeb7 } /* Name.Tag */
.nv { color: #cc6666 } /* Name.Variable */
.ow { color: #8abeb7 } /* Operator.Word */
.w { color: #c5c8c6 } /* Text.Whitespace */
.mf { color: #de935f } /* Literal.Number.Float */
.mh { color: #de935f } /* Literal.Number.Hex */
.mi { color: #de935f } /* Literal.Number.Integer */
.mo { color: #de935f } /* Literal.Number.Oct */
.sb { color: #b5bd68 } /* Literal.String.Backtick */
.sc { color: #c5c8c6 } /* Literal.String.Char */
.sd { color: #969896 } /* Literal.String.Doc */
.s2 { color: #b5bd68 } /* Literal.String.Double */
.se { color: #de935f } /* Literal.String.Escape */
.sh { color: #b5bd68 } /* Literal.String.Heredoc */
.si { color: #de935f } /* Literal.String.Interpol */
.sx { color: #b5bd68 } /* Literal.String.Other */
.sr { color: #b5bd68 } /* Literal.String.Regex */
.s1 { color: #b5bd68 } /* Literal.String.Single */
.ss { color: #b5bd68 } /* Literal.String.Symbol */
.bp { color: #c5c8c6 } /* Name.Builtin.Pseudo */
.vc { color: #cc6666 } /* Name.Variable.Class */
.vg { color: #cc6666 } /* Name.Variable.Global */
.vi { color: #cc6666 } /* Name.Variable.Instance */
.il { color: #de935f } /* Literal.Number.Integer.Long */
pre{background:#1d1f21;color:#c5c8c6}.hll{background-color:#373b41}.c{color:#969896}.err{color:#c66}.k{color:#b294bb}.l{color:#de935f}.n{color:#c5c8c6}.o{color:#8abeb7}.p{color:#c5c8c6}.cm{color:#969896}.cp{color:#969896}.c1{color:#969896}.cs{color:#969896}.gd{color:#c66}.ge{font-style:italic}.gh{color:#c5c8c6;font-weight:700}.gi{color:#b5bd68}.gp{color:#969896;font-weight:700}.gs{font-weight:700}.gu{color:#8abeb7;font-weight:700}.kc{color:#b294bb}.kd{color:#b294bb}.kn{color:#8abeb7}.kp{color:#b294bb}.kr{color:#b294bb}.kt{color:#f0c674}.ld{color:#b5bd68}.m{color:#de935f}.s{color:#b5bd68}.na{color:#81a2be}.nb{color:#c5c8c6}.nc{color:#f0c674}.no{color:#c66}.nd{color:#8abeb7}.ni{color:#c5c8c6}.ne{color:#c66}.nf{color:#81a2be}.nl{color:#c5c8c6}.nn{color:#f0c674}.nx{color:#81a2be}.py{color:#c5c8c6}.nt{color:#8abeb7}.nv{color:#c66}.ow{color:#8abeb7}.w{color:#c5c8c6}.mf{color:#de935f}.mh{color:#de935f}.mi{color:#de935f}.mo{color:#de935f}.sb{color:#b5bd68}.sc{color:#c5c8c6}.sd{color:#969896}.s2{color:#b5bd68}.se{color:#de935f}.sh{color:#b5bd68}.si{color:#de935f}.sx{color:#b5bd68}.sr{color:#b5bd68}.s1{color:#b5bd68}.ss{color:#b5bd68}.bp{color:#c5c8c6}.vc{color:#c66}.vg{color:#c66}.vi{color:#c66}.il{color:#de935f}

0
output/theme/fonts/glyphicons-halflings-regular.eot Executable file → Normal file
View File

0
output/theme/fonts/glyphicons-halflings-regular.svg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 62 KiB

0
output/theme/fonts/glyphicons-halflings-regular.ttf Executable file → Normal file
View File

0
output/theme/fonts/glyphicons-halflings-regular.woff Executable file → Normal file
View File

0
output/theme/images/about-bg.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

0
output/theme/images/contact-bg.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 283 KiB

After

Width:  |  Height:  |  Size: 283 KiB

0
output/theme/images/home-bg.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 169 KiB

After

Width:  |  Height:  |  Size: 169 KiB

0
output/theme/images/post-bg.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 138 KiB

After

Width:  |  Height:  |  Size: 138 KiB

0
output/theme/images/post-sample-image.jpg Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 112 KiB

0
output/theme/js/bootstrap.js vendored Executable file → Normal file
View File

0
output/theme/js/bootstrap.min.js vendored Executable file → Normal file
View File

0
output/theme/js/clean-blog.js Executable file → Normal file
View File

0
output/theme/js/clean-blog.min.js vendored Executable file → Normal file
View File

0
output/theme/js/jquery.js vendored Executable file → Normal file
View File

0
output/theme/js/jquery.min.js vendored Executable file → Normal file
View File

View File

@ -21,7 +21,7 @@
<!-- Custom Fonts -->
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href='https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800' rel='stylesheet' type='text/css'>
@ -193,16 +193,16 @@ apt install apache2-utils
<p>Let's now create a <code>/etc/nginx/conf.d/ssl.conf</code> with the following content :</p>
<div class="highlight"><pre><span></span><span class="nt">ssl_session_timeout</span> <span class="nt">1d</span><span class="o">;</span>
<span class="nt">ssl_session_cache</span> <span class="nt">shared</span><span class="nd">:SSL:50m</span><span class="o">;</span>
<span class="nt">ssl_session_cache</span> <span class="nt">shared</span><span class="p">:</span><span class="nd">SSL</span><span class="p">:</span><span class="nd">50m</span><span class="o">;</span>
<span class="nt">ssl_session_tickets</span> <span class="nt">off</span><span class="o">;</span>
<span class="nt">ssl_certificate</span> <span class="o">/</span><span class="nt">etc</span><span class="o">/</span><span class="nt">letsencrypt</span><span class="o">/</span><span class="nt">live</span><span class="o">/</span><span class="nt">www</span><span class="nc">.example.com</span><span class="o">/</span><span class="nt">fullchain</span><span class="nc">.pem</span><span class="o">;</span>
<span class="nt">ssl_certificate_key</span> <span class="o">/</span><span class="nt">etc</span><span class="o">/</span><span class="nt">letsencrypt</span><span class="o">/</span><span class="nt">live</span><span class="o">/</span><span class="nt">www</span><span class="nc">.example.com</span><span class="o">/</span><span class="nt">privkey</span><span class="nc">.pem</span><span class="o">;</span>
<span class="nt">ssl_trusted_certificate</span> <span class="o">/</span><span class="nt">etc</span><span class="o">/</span><span class="nt">letsencrypt</span><span class="o">/</span><span class="nt">live</span><span class="o">/</span><span class="nt">www</span><span class="nc">.example.com</span><span class="o">/</span><span class="nt">fullchain</span><span class="nc">.pem</span><span class="o">;</span>
<span class="nt">ssl_certificate</span> <span class="o">/</span><span class="nt">etc</span><span class="o">/</span><span class="nt">letsencrypt</span><span class="o">/</span><span class="nt">live</span><span class="o">/</span><span class="nt">www</span><span class="p">.</span><span class="nc">example</span><span class="p">.</span><span class="nc">com</span><span class="o">/</span><span class="nt">fullchain</span><span class="p">.</span><span class="nc">pem</span><span class="o">;</span>
<span class="nt">ssl_certificate_key</span> <span class="o">/</span><span class="nt">etc</span><span class="o">/</span><span class="nt">letsencrypt</span><span class="o">/</span><span class="nt">live</span><span class="o">/</span><span class="nt">www</span><span class="p">.</span><span class="nc">example</span><span class="p">.</span><span class="nc">com</span><span class="o">/</span><span class="nt">privkey</span><span class="p">.</span><span class="nc">pem</span><span class="o">;</span>
<span class="nt">ssl_trusted_certificate</span> <span class="o">/</span><span class="nt">etc</span><span class="o">/</span><span class="nt">letsencrypt</span><span class="o">/</span><span class="nt">live</span><span class="o">/</span><span class="nt">www</span><span class="p">.</span><span class="nc">example</span><span class="p">.</span><span class="nc">com</span><span class="o">/</span><span class="nt">fullchain</span><span class="p">.</span><span class="nc">pem</span><span class="o">;</span>
<span class="nt">ssl_dhparam</span> <span class="o">/</span><span class="nt">etc</span><span class="o">/</span><span class="nt">nginx</span><span class="o">/</span><span class="nt">ssl</span><span class="o">/</span><span class="nt">dhparam</span><span class="nc">.pem</span><span class="o">;</span>
<span class="nt">ssl_dhparam</span> <span class="o">/</span><span class="nt">etc</span><span class="o">/</span><span class="nt">nginx</span><span class="o">/</span><span class="nt">ssl</span><span class="o">/</span><span class="nt">dhparam</span><span class="p">.</span><span class="nc">pem</span><span class="o">;</span>
<span class="nt">ssl_protocols</span> <span class="nt">TLSv1</span> <span class="nt">TLSv1</span><span class="nc">.1</span> <span class="nt">TLSv1</span><span class="nc">.2</span><span class="o">;</span>
<span class="nt">ssl_protocols</span> <span class="nt">TLSv1</span> <span class="nt">TLSv1</span><span class="p">.</span><span class="nc">1</span> <span class="nt">TLSv1</span><span class="p">.</span><span class="nc">2</span><span class="o">;</span>
<span class="nt">ssl_ciphers</span> <span class="s1">&#39;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&#39;</span><span class="o">;</span>
<span class="nt">ssl_prefer_server_ciphers</span> <span class="nt">on</span><span class="o">;</span>
@ -212,7 +212,7 @@ apt install apache2-utils
<span class="nt">ssl_stapling</span> <span class="nt">on</span><span class="o">;</span>
<span class="nt">ssl_stapling_verify</span> <span class="nt">on</span><span class="o">;</span>
<span class="nt">resolver</span> <span class="nt">127</span><span class="nc">.0.0.1</span> <span class="nt">valid</span><span class="o">=</span><span class="nt">300s</span><span class="o">;</span>
<span class="nt">resolver</span> <span class="nt">127</span><span class="p">.</span><span class="nc">0</span><span class="p">.</span><span class="nc">0</span><span class="p">.</span><span class="nc">1</span> <span class="nt">valid</span><span class="o">=</span><span class="nt">300s</span><span class="o">;</span>
<span class="nt">resolver_timeout</span> <span class="nt">5s</span><span class="o">;</span>
</pre></div>
@ -220,7 +220,7 @@ apt install apache2-utils
<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>
<div class="highlight"><pre><span></span>mkdir /etc/nginx/ssl <span class="o">&amp;&amp;</span> chmod <span class="m">700</span> /etc/nginx/ssl
openssl dhparam -out /etc/nginx/ssl/dhparam.pem 3072
openssl dhparam -out /etc/nginx/ssl/dhparam.pem <span class="m">3072</span>
chmod <span class="m">600</span> /etc/nginx/ssl/dhparam.pem
</pre></div>
@ -263,40 +263,40 @@ server {
<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>
<div class="highlight"><pre><span></span><span class="nt">server</span> <span class="p">{</span>
<span class="n">listen</span> <span class="m">80</span><span class="p">;</span>
<span class="n">listen</span> <span class="cp">[</span><span class="p">::</span><span class="cp">]</span><span class="o">:</span><span class="m">80</span><span class="p">;</span>
<span class="n">server_name</span> <span class="n">www</span><span class="o">.</span><span class="n">example</span><span class="o">.</span><span class="n">com</span><span class="p">;</span>
<span class="n">return</span> <span class="m">301</span> <span class="n">https</span><span class="o">://</span><span class="err">$</span><span class="n">server_name</span><span class="err">$</span><span class="n">request_uri</span><span class="p">;</span>
<span class="err">listen</span> <span class="err">80</span><span class="p">;</span>
<span class="n">listen</span> <span class="cp">[</span><span class="p">::</span><span class="cp">]</span><span class="p">:</span><span class="mi">80</span><span class="p">;</span>
<span class="err">server_name</span> <span class="err">www.example.com</span><span class="p">;</span>
<span class="err">return</span> <span class="err">301</span> <span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="err">$</span><span class="n">server_name</span><span class="err">$</span><span class="n">request_uri</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt">server</span> <span class="p">{</span>
<span class="n">listen</span> <span class="m">443</span> <span class="n">ssl</span> <span class="n">http2</span><span class="p">;</span>
<span class="n">listen</span> <span class="cp">[</span><span class="p">::</span><span class="cp">]</span><span class="o">:</span><span class="m">443</span> <span class="n">ssl</span> <span class="n">http2</span><span class="p">;</span>
<span class="n">server_name</span> <span class="n">www</span><span class="o">.</span><span class="n">example</span><span class="o">.</span><span class="n">com</span><span class="p">;</span>
<span class="err">listen</span> <span class="err">443</span> <span class="err">ssl</span> <span class="err">http2</span><span class="p">;</span>
<span class="n">listen</span> <span class="cp">[</span><span class="p">::</span><span class="cp">]</span><span class="p">:</span><span class="mi">443</span> <span class="n">ssl</span> <span class="n">http2</span><span class="p">;</span>
<span class="err">server_name</span> <span class="err">www.example.com</span><span class="p">;</span>
<span class="n">root</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">www</span><span class="p">;</span>
<span class="err">root</span> <span class="err">/var/www</span><span class="p">;</span>
<span class="n">location</span> <span class="o">/</span> <span class="err">{</span>
<span class="n">index</span> <span class="n">index</span><span class="o">.</span><span class="n">html</span><span class="p">;</span>
<span class="err">location</span> <span class="err">/</span> <span class="err">{</span>
<span class="err">index</span> <span class="err">index.html</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt">location</span> <span class="o">/</span><span class="nc">.well-known</span><span class="o">/</span><span class="nt">acme-challenge</span> <span class="p">{</span>
<span class="n">root</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">www</span><span class="o">/</span><span class="n">letsencrypt</span><span class="p">;</span>
<span class="nt">location</span> <span class="o">/</span><span class="p">.</span><span class="nc">well-known</span><span class="o">/</span><span class="nt">acme-challenge</span> <span class="p">{</span>
<span class="err">root</span> <span class="err">/var/www/letsencrypt</span><span class="p">;</span>
<span class="p">}</span>
<span class="nt">location</span> <span class="o">/</span><span class="nt">data</span> <span class="p">{</span>
<span class="n">client_body_temp_path</span> <span class="o">/</span><span class="n">tmp</span><span class="p">;</span>
<span class="n">dav_methods</span> <span class="n">PUT</span> <span class="n">DELETE</span> <span class="n">MKCOL</span> <span class="n">COPY</span> <span class="n">MOVE</span><span class="p">;</span>
<span class="n">dav_ext_methods</span> <span class="n">PROPFIND</span> <span class="n">OPTIONS</span><span class="p">;</span>
<span class="n">create_full_put_path</span> <span class="n">on</span><span class="p">;</span>
<span class="n">dav_access</span> <span class="n">user</span><span class="o">:</span><span class="n">r</span> <span class="n">group</span><span class="o">:</span><span class="n">r</span><span class="p">;</span>
<span class="err">client_body_temp_path</span> <span class="err">/tmp</span><span class="p">;</span>
<span class="err">dav_methods</span> <span class="err">PUT</span> <span class="err">DELETE</span> <span class="err">MKCOL</span> <span class="err">COPY</span> <span class="err">MOVE</span><span class="p">;</span>
<span class="err">dav_ext_methods</span> <span class="err">PROPFIND</span> <span class="err">OPTIONS</span><span class="p">;</span>
<span class="err">create_full_put_path</span> <span class="err">on</span><span class="p">;</span>
<span class="err">dav_access</span> <span class="n">user</span><span class="p">:</span><span class="n">r</span> <span class="n">group</span><span class="o">:</span><span class="n">r</span><span class="p">;</span>
<span class="n">auth_basic</span> <span class="s2">&quot;Restricted access&quot;</span><span class="p">;</span>
<span class="n">auth_basic_user_file</span> <span class="n">auth</span><span class="o">/</span><span class="n">webdav</span><span class="p">;</span>
<span class="err">auth_basic</span> <span class="err">&quot;Restricted</span> <span class="err">access&quot;</span><span class="p">;</span>
<span class="err">auth_basic_user_file</span> <span class="err">auth/webdav</span><span class="p">;</span>
<span class="n">limit_except</span> <span class="n">GET</span> <span class="err">{</span>
<span class="n">allow</span> <span class="o">&lt;</span><span class="n">YOUR</span> <span class="n">IP</span> <span class="n">HERE</span><span class="o">&gt;</span><span class="p">;</span>
<span class="n">deny</span> <span class="n">all</span><span class="p">;</span>
<span class="err">limit_except</span> <span class="err">GET</span> <span class="err">{</span>
<span class="err">allow</span> <span class="err">&lt;YOUR</span> <span class="err">IP</span> <span class="err">HERE&gt;</span><span class="p">;</span>
<span class="err">deny</span> <span class="err">all</span><span class="p">;</span>
<span class="p">}</span>
<span class="err">}</span>
@ -350,7 +350,7 @@ nginx -s reload
<span class="nv">PRG</span><span class="o">=</span><span class="s2">&quot;/usr/bin/letsencrypt&quot;</span>
<span class="nv">CONFIG</span><span class="o">=</span><span class="s2">&quot;/etc/letsencrypt/cli.ini&quot;</span>
<span class="nv">MAILDEST</span><span class="o">=</span><span class="s2">&quot;admin@example.com&quot;</span>
<span class="nv">GLOBAL</span><span class="o">=</span>0
<span class="nv">GLOBAL</span><span class="o">=</span><span class="m">0</span>
<span class="c1"># www.example.com</span>
<span class="nv">$PRG</span> --config <span class="nv">$CONFIG</span> certonly -w /var/www/letsencrypt -d www.example.com
@ -415,8 +415,8 @@ nginx -s reload
3
4</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="ch">#!/bin/bash</span>
mknod /dev/fuse c <span class="m">10</span> 229
mount -t davfs https://www.example.com/data /data -o ro,dir_mode<span class="o">=</span>750,file_mode<span class="o">=</span>640,uid<span class="o">=</span>root,gid<span class="o">=</span>root
mknod /dev/fuse c <span class="m">10</span> <span class="m">229</span>
mount -t davfs https://www.example.com/data /data -o ro,dir_mode<span class="o">=</span><span class="m">750</span>,file_mode<span class="o">=</span><span class="m">640</span>,uid<span class="o">=</span>root,gid<span class="o">=</span>root
</pre></div>
</td></tr></table>
@ -433,9 +433,6 @@ mount -t davfs https://www.example.com/data /data -o ro,dir_mode<span class="o">
</article>
<hr>
<div class="sharing">
</div>
<hr>
<div class="comments">
@ -516,14 +513,14 @@ mount -t davfs https://www.example.com/data /data -o ro,dir_mode<span class="o">
</ul>
<p class="copyright text-muted">
Blog powered by <a href="http://getpelican.com">Pelican</a>,
which takes great advantage of <a href="http://python.org">Python</a>.
which takes great advantage of <a href="http://python.org">Python</a>. <br /> &copy; Antoine Joubert
</p> </div>
</div>
</div>
</footer>
<!-- jQuery -->
<script src="https://captainark.net/theme/js/jquery.js"></script>
<script src="https://captainark.net/theme/js/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="https://captainark.net/theme/js/bootstrap.min.js"></script>
@ -532,13 +529,16 @@ mount -t davfs https://www.example.com/data /data -o ro,dir_mode<span class="o">
<script src="https://captainark.net/theme/js/clean-blog.min.js"></script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-53658366-1']);
_gaq.push(['_trackPageview']);
var pkBaseURL = "https://nibelungvalesti.net/stats";
var _paq = _paq || [];
_paq.push(["trackPageView"]);
_paq.push(["enableLinkTracking"]);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
var u=(("https:" == document.location.protocol) ? "https" : "http")+"://"+pkBaseURL+"/";
_paq.push(["setTrackerUrl", u+"piwik.php"]);
_paq.push(["setSiteId", "1"]);
var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
})();
</script>
<script type="text/javascript">

View File

@ -56,4 +56,5 @@ SOCIAL = (
)
DISQUS_SITENAME = "captainark"
GOOGLE_ANALYTICS = "UA-53658366-1"
PIWIK_URL = "https://nibelungvalesti.net/stats"
PIWIK_SITE_ID = "1"

Binary file not shown.

@ -1 +1 @@
Subproject commit d091ce695b135c81446f3e1e00e678877d3acd6a
Subproject commit e7c18e80b077448324f084a8e6be59fe92bdf40e