migrating from google analytics to piwik
@ -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 ;
|
||||
|
@ -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 /> © 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">
|
||||
|
@ -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 /> © 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">
|
||||
|
@ -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 /> © 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">
|
||||
|
@ -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 /> © 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">
|
||||
|
@ -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 /> © 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">
|
||||
|
@ -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 /> © 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">
|
||||
|
@ -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 /> © 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">
|
||||
|
@ -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 /> © 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">
|
||||
|
@ -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 /> © 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">
|
||||
|
@ -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">"</span><span class="nv">$DAEMON</span><span class="s2">"</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span>
|
||||
log_action_msg <span class="s2">"</span><span class="nv">$DESC</span><span class="s2">: Could not find flexget executable. Exiting."</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">"</span><span class="nv">$DESC</span><span class="s2">: /etc/default/</span><span class="nv">$NAME</span><span class="s2"> not found. Exiting."</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">"</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."</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">"</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."</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">"</span><span class="nv">$DESC</span><span class="s2">: Starting the daemon."</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">"</span><span class="nv">$DESC</span><span class="s2">: Stopping the daemon."</span>
|
||||
start-stop-daemon --stop --quiet --chuid <span class="s2">"</span><span class="nv">$FGUSER</span><span class="s2">"</span> --pidfile <span class="s2">"</span><span class="nv">$PIDFILE</span><span class="s2">"</span> --retry 30
|
||||
start-stop-daemon --stop --quiet --chuid <span class="s2">"</span><span class="nv">$FGUSER</span><span class="s2">"</span> --pidfile <span class="s2">"</span><span class="nv">$PIDFILE</span><span class="s2">"</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">"</span><span class="nv">$PIDFILE</span><span class="s2">"</span> <span class="o">]</span> <span class="o">&&</span> rm -f <span class="s2">"</span><span class="nv">$PIDFILE</span><span class="s2">"</span>
|
||||
end_log
|
||||
<span class="k">else</span>
|
||||
log_action_msg <span class="s2">"</span><span class="nv">$DESC</span><span class="s2">: Not currently running. Aborting."</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 /> © 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">
|
||||
|
@ -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 /> © 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">
|
||||
|
@ -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 '"' choose-window
|
||||
</article>
|
||||
|
||||
|
||||
<hr>
|
||||
<div class="sharing">
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
<div class="comments">
|
||||
@ -367,14 +364,14 @@ bind '"' 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 /> © 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 '"' 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">
|
||||
|
@ -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 /> © 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">
|
||||
|
@ -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 /> © 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">
|
||||
|
@ -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 /> © 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">
|
||||
|
@ -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 /> © 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">
|
||||
|
@ -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 -> 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">'captainarkdotnet'</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 /> © 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">
|
||||
|
164
output/rss.xml
@ -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"><p>This website has been hosted on an <a href="https://www.online.net">Online.net</a> dedicated server since its creation. I've been one of their customers for the past 3 years now, and I still don't have anything bad to say about them.</p>
|
||||
<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"><p>This website has been hosted on an <a href="https://www.online.net">Online.net</a> dedicated server since its creation. I've been one of their customers for the past 3 years now, and I still don't have anything bad to say about them.</p>
|
||||
<p>They recently upgraded their personnal range, and I took the opportunity to upgrade …</p></summary><content type="html"><p>This website has been hosted on an <a href="https://www.online.net">Online.net</a> dedicated server since its creation. I've been one of their customers for the past 3 years now, and I still don't have anything bad to say about them.</p>
|
||||
<p>They recently upgraded their personnal range, and I took the opportunity to upgrade from a single server running all of my services to 2 servers running LXC containers that are hosting my services.</p>
|
||||
<p>It took me 2 days to migrate everything, but it was worth it. If I decide to switch servers again, I'll have to migrate the containers instead of the services themselves. Considering they are stored on a separate BTRFS volume, it shouldn't take me more than a few hours at most.</p>
|
||||
<p>During the migration, I realized that I needed to make files that were hosted on one server accessible to the other. I could have gone with CIFS or NFS, but I wanted to have encryption built-in instead of having to rely on a VPN for that. Since I figured it was a good opportunity to learn something new, I ended up going with WebDAV.</p>
|
||||
@ -77,16 +78,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>
|
||||
|
||||
@ -96,7 +97,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>
|
||||
|
||||
@ -104,7 +105,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>
|
||||
|
||||
@ -147,40 +148,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>
|
||||
|
||||
@ -234,7 +235,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
|
||||
@ -299,8 +300,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>
|
||||
|
||||
@ -313,7 +314,9 @@ mount -t davfs https://www.example.com/data /data -o ro,dir_mode<span class="
|
||||
|
||||
<p>That way, if monit notices that the <code>/data/davfs.txt</code> file becomes inaccessible for some reason, it will try remouting the share.</p>
|
||||
<h2>Conclusion</h2>
|
||||
<p>That's all ! Hopefully this has been useful to someone. Please do comment below if you have any question or if this has been helpful !</p></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"><p>I wrote a MySQL database backup script a while back. I known they are more than enough of them already floating around the internet, but hey, I figured I'd share it here anyway.</p>
|
||||
<p>That's all ! Hopefully this has been useful to someone. Please do comment below if you have any question or if this has been helpful !</p></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"><p>I wrote a MySQL database backup script a while back. I known they are more than enough of them already floating around the internet, but hey, I figured I'd share it here anyway.</p>
|
||||
<h2>The script</h2>
|
||||
<p>For the script to work, you'll need to edit a few variable to match your …</p></summary><content type="html"><p>I wrote a MySQL database backup script a while back. I known they are more than enough of them already floating around the internet, but hey, I figured I'd share it here anyway.</p>
|
||||
<h2>The script</h2>
|
||||
<p>For the script to work, you'll need to edit a few variable to match your configuration.</p>
|
||||
<ul>
|
||||
@ -351,7 +354,8 @@ sqlbk<span class="o">()</span> <span class="o">{</span>
|
||||
<h1>Conclusion</h1>
|
||||
<p>You've probably noticed that the script erases the previous backup when a new one is made.</p>
|
||||
<p>I don't need to keep multiple versions of the same database backup on my servers because they are all saved remotely on a daily basis using <a href="http://rsnapshot.org/">Rsnapshot</a>. I'll probably write an article on the subject in the future.</p>
|
||||
<p>As usual, feedback is always appreciated !</p></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"><p>As I explained in <a href="https://www.captainark.net/setting-up-a-mail-server.html">this previous tutorial</a>, I've been running my own mail server without any issue for some time now.</p>
|
||||
<p>As usual, feedback is always appreciated !</p></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"><p>As I explained in <a href="https://www.captainark.net/setting-up-a-mail-server.html">this previous tutorial</a>, I've been running my own mail server without any issue for some time now.</p>
|
||||
<p>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 …</p></summary><content type="html"><p>As I explained in <a href="https://www.captainark.net/setting-up-a-mail-server.html">this previous tutorial</a>, I've been running my own mail server without any issue for some time now.</p>
|
||||
<p>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.</p>
|
||||
<p>After a bit a googling, I've settled on <a href="http://postfixadmin.sourceforge.net/">Postfix Admin</a>.</p>
|
||||
<p>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 <a href="https://github.com/postfixadmin/postfixadmin">Github repo</a>.</p>
|
||||
@ -460,9 +464,10 @@ rm /etc/dovecot/sql.conf.bak
|
||||
|
||||
|
||||
<h1>Conclusion</h1>
|
||||
<p>That's all ! As always, please do leave a comment if this article has been of any use to you !</p></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"><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>That's all ! As always, please do leave a comment if this article has been of any use to you !</p></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"><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 …</p></summary><content type="html"><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>
|
||||
@ -625,7 +630,9 @@ bind &#39;&quot;&#39; choose-window
|
||||
|
||||
|
||||
<h2>Conclusion</h2>
|
||||
<p>That's all ! As always, please do leave a comment if you've found something useful in this article !</p></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"><p>I've recently bought a <a href="http://www8.hp.com/us/en/products/proliant-servers/product-detail.html?oid=5379860">HP Proliant Microserver Gen8</a> to play around with LXC and try new stuff.</p>
|
||||
<p>That's all ! As always, please do leave a comment if you've found something useful in this article !</p></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"><p>I've recently bought a <a href="http://www8.hp.com/us/en/products/proliant-servers/product-detail.html?oid=5379860">HP Proliant Microserver Gen8</a> to play around with LXC and try new stuff.</p>
|
||||
<p>From the 4 Debian machines I had to keep up-to-date, I now have 7, so it became quite time-consumming to manually SSH to each of them whenever an update became available.</p>
|
||||
<p>I ended …</p></summary><content type="html"><p>I've recently bought a <a href="http://www8.hp.com/us/en/products/proliant-servers/product-detail.html?oid=5379860">HP Proliant Microserver Gen8</a> to play around with LXC and try new stuff.</p>
|
||||
<p>From the 4 Debian machines I had to keep up-to-date, I now have 7, so it became quite time-consumming to manually SSH to each of them whenever an update became available.</p>
|
||||
<p>I ended up looking at <a href="http://www.ansible.com/">Ansible</a> to speed up the process and, within an hour, I had a working playbook that updates the debian packages, pip packages and git repos installed on all of my servers with a single command.</p>
|
||||
<p>I figured I'd share the playbook I use to update the Debian packages !</p>
|
||||
@ -693,7 +700,8 @@ bind &#39;&quot;&#39; choose-window
|
||||
|
||||
|
||||
<h2>Conclusion</h2>
|
||||
<p>That's all ! Please leave a comment if you've found this playbook helpful !</p></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"><p>I've decided to migrate this blog to <a href="http://blog.getpelican.com/">Pelican</a>. I've been playing around with it over the week-end, and it turns out to be way easier to manage than <a href="https://jekyllrb.com/">Jekyll</a>. Themes are much easier to install and configure, so it ends up looking better as well !</p>
|
||||
<p>That's all ! Please leave a comment if you've found this playbook helpful !</p></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"><p>I've decided to migrate this blog to <a href="http://blog.getpelican.com/">Pelican</a>. I've been playing around with it over the week-end, and it turns out to be way easier to manage than <a href="https://jekyllrb.com/">Jekyll</a>. Themes are much easier to install and configure, so it ends up looking better as well !</p>
|
||||
<p>Since I'm basically recreating this …</p></summary><content type="html"><p>I've decided to migrate this blog to <a href="http://blog.getpelican.com/">Pelican</a>. I've been playing around with it over the week-end, and it turns out to be way easier to manage than <a href="https://jekyllrb.com/">Jekyll</a>. Themes are much easier to install and configure, so it ends up looking better as well !</p>
|
||||
<p>Since I'm basically recreating this blog from scratch, I've decided to delete the old git repo that was hosting it and to create a new one.</p>
|
||||
<p>Setting up your own private git repo is pretty easy to achieve and is already well-documented on the <a href="https://git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server">Git</a> website.</p>
|
||||
<p>Every time I want to create a new repo, I've had time to forget how to do it and I end up looking for that page, so I figured I'd write a few lines on the subject.</p>
|
||||
@ -701,7 +709,7 @@ bind &#39;&quot;&#39; choose-window
|
||||
<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>:
|
||||
@ -715,7 +723,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>:
|
||||
@ -792,11 +800,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>
|
||||
@ -812,11 +820,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>
|
||||
|
||||
@ -833,7 +841,10 @@ Checking connectivity... <span class="k">done</span>.
|
||||
<li>once a branch has been copied locally, you can switch to it with the <code>git checkout {branch}</code> command.</li>
|
||||
</ul>
|
||||
<p>For more information on git a command, use <code>man git-{command}</code> !</p>
|
||||
<p>If you've found this tutorial in any way helpful, please feel free to leave a comment !</p></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"><p>I've been using <a href="http://flexget.com/">Flexget</a> for the past two years or so as a download automator.</p>
|
||||
<p>If you've found this tutorial in any way helpful, please feel free to leave a comment !</p></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"><p>I've been using <a href="http://flexget.com/">Flexget</a> for the past two years or so as a download automator.</p>
|
||||
<p>Since I wrote an <a href="http://flexget.com/wiki/Daemon/Startup#InsservscriptDebiancompatible">init script</a> for it a while back, and it is compatible with Debian Jessie / systemd, I figured I'd share it here.</p>
|
||||
<h2>The script</h2>
|
||||
<p>All of the following should be done as …</p></summary><content type="html"><p>I've been using <a href="http://flexget.com/">Flexget</a> for the past two years or so as a download automator.</p>
|
||||
<p>Since I wrote an <a href="http://flexget.com/wiki/Daemon/Startup#InsservscriptDebiancompatible">init script</a> for it a while back, and it is compatible with Debian Jessie / systemd, I figured I'd share it here.</p>
|
||||
<h2>The script</h2>
|
||||
<p>All of the following should be done as the root user.</p>
|
||||
@ -900,7 +911,7 @@ Checking connectivity... <span class="k">done</span>.
|
||||
<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>
|
||||
@ -908,13 +919,13 @@ Checking connectivity... <span class="k">done</span>.
|
||||
. /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>
|
||||
@ -928,11 +939,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>
|
||||
|
||||
@ -965,7 +976,7 @@ start_flexget<span class="o">()</span> <span class="o">{</s
|
||||
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>
|
||||
@ -980,13 +991,13 @@ stop_flexget<span class="o">()</span> <span class="o">{</sp
|
||||
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>
|
||||
|
||||
@ -1018,7 +1029,7 @@ status_flexget<span class="o">()</span> <span class="o">{</
|
||||
<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>
|
||||
|
||||
|
||||
@ -1061,7 +1072,20 @@ service flexget status
|
||||
|
||||
|
||||
<h2>Conclusion</h2>
|
||||
<p>That's all ! If you are using this script, please let me know in the comment section below !</p></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"><p>In this first tutorial, I'll explain how I've configured my mail server using the following :</p>
|
||||
<p>That's all ! If you are using this script, please let me know in the comment section below !</p></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"><p>In this first tutorial, I'll explain how I've configured my mail server using the following :</p>
|
||||
<ul>
|
||||
<li>A server running Linux Debian (jessie) ;</li>
|
||||
<li>Postfix ;</li>
|
||||
<li>Postfix-policyd-spf-python ;</li>
|
||||
<li>Dovecot ;</li>
|
||||
<li>Spamassassin ;</li>
|
||||
<li>OpenDKIM ;</li>
|
||||
<li>OpenDMARC ;</li>
|
||||
<li>Monit ;</li>
|
||||
<li>Rainloop.</li>
|
||||
</ul>
|
||||
<p>I'm assuming you have some basic knowledge of Linux and DNS configuration.</p>
|
||||
<p>You can host this server at home, but you …</p></summary><content type="html"><p>In this first tutorial, I'll explain how I've configured my mail server using the following :</p>
|
||||
<ul>
|
||||
<li>A server running Linux Debian (jessie) ;</li>
|
||||
<li>Postfix ;</li>
|
||||
@ -1243,8 +1267,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>
|
||||
|
||||
|
||||
@ -1722,8 +1746,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>
|
||||
|
||||
|
||||
@ -1901,7 +1925,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>
|
||||
|
||||
|
||||
@ -2016,4 +2040,4 @@ Process &#39;opendmarc&#39; Running
|
||||
<li><a href="https://www.digitalocean.com/community/tutorials/how-to-configure-a-mail-server-using-postfix-dovecot-mysql-and-spamassasin">A third tutorial from DigitalOcean</a></li>
|
||||
<li><a href="https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy">A tutorial on setting up OpenDKIM</a></li>
|
||||
<li><a href="https://guillaume.vaillant.me/?p=481">A tutorial on setting up OpenDMARC</a> (in french)</li>
|
||||
</ul></summary></entry></feed>
|
||||
</ul></content></entry></feed>
|
@ -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 = "<server's FQDN>"
|
||||
|
||||
<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 'opendmarc' Running
|
||||
</article>
|
||||
|
||||
|
||||
<hr>
|
||||
<div class="sharing">
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
<div class="comments">
|
||||
@ -1157,14 +1154,14 @@ Process 'opendmarc' 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 /> © 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 'opendmarc' 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">
|
||||
|
@ -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 /> © 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
0
output/theme/css/bootstrap.min.css
vendored
Executable file → Normal file
11
output/theme/css/clean-blog.css
Executable file → Normal 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
@ -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}
|
||||
|
@ -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}
|
||||
|
1
output/theme/css/code_blocks/github_jekyll.css
Normal 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; }
|
@ -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}
|
||||
|
@ -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}
|
||||
|
@ -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
0
output/theme/fonts/glyphicons-halflings-regular.svg
Executable file → Normal 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
0
output/theme/fonts/glyphicons-halflings-regular.woff
Executable file → Normal file
0
output/theme/images/about-bg.jpg
Executable file → Normal file
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
0
output/theme/images/contact-bg.jpg
Executable file → Normal file
Before Width: | Height: | Size: 283 KiB After Width: | Height: | Size: 283 KiB |
0
output/theme/images/home-bg.jpg
Executable file → Normal file
Before Width: | Height: | Size: 169 KiB After Width: | Height: | Size: 169 KiB |
0
output/theme/images/post-bg.jpg
Executable file → Normal 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
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 112 KiB |
0
output/theme/js/bootstrap.js
vendored
Executable file → Normal file
0
output/theme/js/bootstrap.min.js
vendored
Executable file → Normal file
0
output/theme/js/clean-blog.js
Executable file → Normal file
0
output/theme/js/clean-blog.min.js
vendored
Executable file → Normal file
0
output/theme/js/jquery.js
vendored
Executable file → Normal file
0
output/theme/js/jquery.min.js
vendored
Executable file → Normal 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">'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'</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">&&</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">"Restricted access"</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">"Restricted</span> <span class="err">access"</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"><</span><span class="n">YOUR</span> <span class="n">IP</span> <span class="n">HERE</span><span class="o">></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"><YOUR</span> <span class="err">IP</span> <span class="err">HERE></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">"/usr/bin/letsencrypt"</span>
|
||||
<span class="nv">CONFIG</span><span class="o">=</span><span class="s2">"/etc/letsencrypt/cli.ini"</span>
|
||||
<span class="nv">MAILDEST</span><span class="o">=</span><span class="s2">"admin@example.com"</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 /> © 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">
|
||||
|
@ -56,4 +56,5 @@ SOCIAL = (
|
||||
)
|
||||
|
||||
DISQUS_SITENAME = "captainark"
|
||||
GOOGLE_ANALYTICS = "UA-53658366-1"
|
||||
PIWIK_URL = "https://nibelungvalesti.net/stats"
|
||||
PIWIK_SITE_ID = "1"
|
||||
|
BIN
pelicanconf.pyc
@ -1 +1 @@
|
||||
Subproject commit d091ce695b135c81446f3e1e00e678877d3acd6a
|
||||
Subproject commit e7c18e80b077448324f084a8e6be59fe92bdf40e
|