Compare commits
No commits in common. 'master' and 'gh-pages' have entirely different histories.
59 changed files with 7540 additions and 1671 deletions
@ -1,3 +0,0 @@ |
|||||||
[submodule "mkdocs-material"] |
|
||||||
path = mkdocs-material |
|
||||||
url = https://git.charlesreid1.com/charlesreid1/mkdocs-material |
|
@ -1,20 +0,0 @@ |
|||||||
Copyright (c) 2018 Charles Reid |
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy |
|
||||||
of this software and associated documentation files (the "Software"), to deal |
|
||||||
in the Software without restriction, including without limitation the rights |
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
|
||||||
copies of the Software, and to permit persons to whom the Software is |
|
||||||
furnished to do so, subject to the following conditions: |
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all |
|
||||||
copies or substantial portions of the Software. |
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
|
||||||
SOFTWARE. |
|
||||||
|
|
@ -1,16 +0,0 @@ |
|||||||
# The Wisko Manual |
|
||||||
|
|
||||||
To make everything: |
|
||||||
|
|
||||||
``` |
|
||||||
mkdocs build |
|
||||||
``` |
|
||||||
|
|
||||||
This builds everything in the `site` directory. |
|
||||||
To view the docs: |
|
||||||
|
|
||||||
``` |
|
||||||
mkdocs serve |
|
||||||
``` |
|
||||||
|
|
||||||
and visit lcoalhost:8000 in your browser. |
|
After Width: | Height: | Size: 521 B |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.6 KiB |
File diff suppressed because one or more lines are too long
@ -0,0 +1 @@ |
|||||||
|
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r,i,n;e.da=function(){this.pipeline.reset(),this.pipeline.add(e.da.trimmer,e.da.stopWordFilter,e.da.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.da.stemmer))},e.da.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.da.trimmer=e.trimmerSupport.generateTrimmer(e.da.wordCharacters),e.Pipeline.registerFunction(e.da.trimmer,"trimmer-da"),e.da.stemmer=(r=e.stemmerSupport.Among,i=e.stemmerSupport.SnowballProgram,n=new function(){var e,n,t,s=[new r("hed",-1,1),new r("ethed",0,1),new r("ered",-1,1),new r("e",-1,1),new r("erede",3,1),new r("ende",3,1),new r("erende",5,1),new r("ene",3,1),new r("erne",3,1),new r("ere",3,1),new r("en",-1,1),new r("heden",10,1),new r("eren",10,1),new r("er",-1,1),new r("heder",13,1),new r("erer",13,1),new r("s",-1,2),new r("heds",16,1),new r("es",16,1),new r("endes",18,1),new r("erendes",19,1),new r("enes",18,1),new r("ernes",18,1),new r("eres",18,1),new r("ens",16,1),new r("hedens",24,1),new r("erens",24,1),new r("ers",16,1),new r("ets",16,1),new r("erets",28,1),new r("et",-1,1),new r("eret",30,1)],o=[new r("gd",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1)],a=[new r("ig",-1,1),new r("lig",0,1),new r("elig",1,1),new r("els",-1,1),new r("løst",-1,2)],d=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],u=[239,254,42,3,0,0,0,0,0,0,0,0,0,0,0,0,16],c=new i;function l(){var e,r=c.limit-c.cursor;c.cursor>=n&&(e=c.limit_backward,c.limit_backward=n,c.ket=c.cursor,c.find_among_b(o,4)?(c.bra=c.cursor,c.limit_backward=e,c.cursor=c.limit-r,c.cursor>c.limit_backward&&(c.cursor--,c.bra=c.cursor,c.slice_del())):c.limit_backward=e)}this.setCurrent=function(e){c.setCurrent(e)},this.getCurrent=function(){return c.getCurrent()},this.stem=function(){var r,i=c.cursor;return function(){var r,i=c.cursor+3;if(n=c.limit,0<=i&&i<=c.limit){for(e=i;;){if(r=c.cursor,c.in_grouping(d,97,248)){c.cursor=r;break}if(c.cursor=r,r>=c.limit)return;c.cursor++}for(;!c.out_grouping(d,97,248);){if(c.cursor>=c.limit)return;c.cursor++}(n=c.cursor)<e&&(n=e)}}(),c.limit_backward=i,c.cursor=c.limit,function(){var e,r;if(c.cursor>=n&&(r=c.limit_backward,c.limit_backward=n,c.ket=c.cursor,e=c.find_among_b(s,32),c.limit_backward=r,e))switch(c.bra=c.cursor,e){case 1:c.slice_del();break;case 2:c.in_grouping_b(u,97,229)&&c.slice_del()}}(),c.cursor=c.limit,l(),c.cursor=c.limit,function(){var e,r,i,t=c.limit-c.cursor;if(c.ket=c.cursor,c.eq_s_b(2,"st")&&(c.bra=c.cursor,c.eq_s_b(2,"ig")&&c.slice_del()),c.cursor=c.limit-t,c.cursor>=n&&(r=c.limit_backward,c.limit_backward=n,c.ket=c.cursor,e=c.find_among_b(a,5),c.limit_backward=r,e))switch(c.bra=c.cursor,e){case 1:c.slice_del(),i=c.limit-c.cursor,l(),c.cursor=c.limit-i;break;case 2:c.slice_from("løs")}}(),c.cursor=c.limit,c.cursor>=n&&(r=c.limit_backward,c.limit_backward=n,c.ket=c.cursor,c.out_grouping_b(d,97,248)?(c.bra=c.cursor,t=c.slice_to(t),c.limit_backward=r,c.eq_v_b(t)&&c.slice_del()):c.limit_backward=r),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}),e.Pipeline.registerFunction(e.da.stemmer,"stemmer-da"),e.da.stopWordFilter=e.generateStopWordFilter("ad af alle alt anden at blev blive bliver da de dem den denne der deres det dette dig din disse dog du efter eller en end er et for fra ham han hans har havde have hende hendes her hos hun hvad hvis hvor i ikke ind jeg jer jo kunne man mange med meget men mig min mine mit mod ned noget nogle nu når og også om op os over på selv sig sin sine sit skal skulle som sådan thi til ud under var vi vil ville vor være været".split(" ")),e.Pipeline.registerFunction(e.da.stopWordFilter,"stopWordFilter-da")}}); |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1 @@ |
|||||||
|
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r="2"==e.version[0];e.jp=function(){this.pipeline.reset(),this.pipeline.add(e.jp.stopWordFilter,e.jp.stemmer),r?this.tokenizer=e.jp.tokenizer:(e.tokenizer&&(e.tokenizer=e.jp.tokenizer),this.tokenizerFn&&(this.tokenizerFn=e.jp.tokenizer))};var t=new e.TinySegmenter;e.jp.tokenizer=function(n){if(!arguments.length||null==n||null==n)return[];if(Array.isArray(n))return n.map(function(t){return r?new e.Token(t.toLowerCase()):t.toLowerCase()});for(var i=n.toString().toLowerCase().replace(/^\s+/,""),o=i.length-1;o>=0;o--)if(/\S/.test(i.charAt(o))){i=i.substring(0,o+1);break}return t.segment(i).filter(function(e){return!!e}).map(function(t){return r?new e.Token(t):t})},e.jp.stemmer=function(e){return e},e.Pipeline.registerFunction(e.jp.stemmer,"stemmer-jp"),e.jp.wordCharacters="一二三四五六七八九十百千万億兆一-龠々〆ヵヶぁ-んァ-ヴーア-ン゙a-zA-Za-zA-Z0-90-9",e.jp.stopWordFilter=function(t){if(-1===e.jp.stopWordFilter.stopWords.indexOf(r?t.toString():t))return t},e.jp.stopWordFilter=e.generateStopWordFilter("これ それ あれ この その あの ここ そこ あそこ こちら どこ だれ なに なん 何 私 貴方 貴方方 我々 私達 あの人 あのかた 彼女 彼 です あります おります います は が の に を で え から まで より も どの と し それで しかし".split(" ")),e.Pipeline.registerFunction(e.jp.stopWordFilter,"stopWordFilter-jp")}}); |
@ -0,0 +1 @@ |
|||||||
|
!function(e,i){"function"==typeof define&&define.amd?define(i):"object"==typeof exports?module.exports=i():i()(e.lunr)}(this,function(){return function(e){e.multiLanguage=function(){for(var i=Array.prototype.slice.call(arguments),t=i.join("-"),r="",n=[],s=[],p=0;p<i.length;++p)"en"==i[p]?(r+="\\w",n.unshift(e.stopWordFilter),n.push(e.stemmer),s.push(e.stemmer)):(r+=e[i[p]].wordCharacters,n.unshift(e[i[p]].stopWordFilter),n.push(e[i[p]].stemmer),s.push(e[i[p]].stemmer));var o=e.trimmerSupport.generateTrimmer(r);return e.Pipeline.registerFunction(o,"lunr-multi-trimmer-"+t),n.unshift(o),function(){this.pipeline.reset(),this.pipeline.add.apply(this.pipeline,n),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add.apply(this.searchPipeline,s))}}}}); |
@ -0,0 +1 @@ |
|||||||
|
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r,n,i;e.no=function(){this.pipeline.reset(),this.pipeline.add(e.no.trimmer,e.no.stopWordFilter,e.no.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.no.stemmer))},e.no.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.no.trimmer=e.trimmerSupport.generateTrimmer(e.no.wordCharacters),e.Pipeline.registerFunction(e.no.trimmer,"trimmer-no"),e.no.stemmer=(r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,i=new function(){var e,i,t=[new r("a",-1,1),new r("e",-1,1),new r("ede",1,1),new r("ande",1,1),new r("ende",1,1),new r("ane",1,1),new r("ene",1,1),new r("hetene",6,1),new r("erte",1,3),new r("en",-1,1),new r("heten",9,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",12,1),new r("s",-1,2),new r("as",14,1),new r("es",14,1),new r("edes",16,1),new r("endes",16,1),new r("enes",16,1),new r("hetenes",19,1),new r("ens",14,1),new r("hetens",21,1),new r("ers",14,1),new r("ets",14,1),new r("et",-1,1),new r("het",25,1),new r("ert",-1,3),new r("ast",-1,1)],o=[new r("dt",-1,-1),new r("vt",-1,-1)],s=[new r("leg",-1,1),new r("eleg",0,1),new r("ig",-1,1),new r("eig",2,1),new r("lig",2,1),new r("elig",4,1),new r("els",-1,1),new r("lov",-1,1),new r("elov",7,1),new r("slov",7,1),new r("hetslov",9,1)],a=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],m=[119,125,149,1],l=new n;this.setCurrent=function(e){l.setCurrent(e)},this.getCurrent=function(){return l.getCurrent()},this.stem=function(){var r,n,u,d,c=l.cursor;return function(){var r,n=l.cursor+3;if(i=l.limit,0<=n||n<=l.limit){for(e=n;;){if(r=l.cursor,l.in_grouping(a,97,248)){l.cursor=r;break}if(r>=l.limit)return;l.cursor=r+1}for(;!l.out_grouping(a,97,248);){if(l.cursor>=l.limit)return;l.cursor++}(i=l.cursor)<e&&(i=e)}}(),l.limit_backward=c,l.cursor=l.limit,function(){var e,r,n;if(l.cursor>=i&&(r=l.limit_backward,l.limit_backward=i,l.ket=l.cursor,e=l.find_among_b(t,29),l.limit_backward=r,e))switch(l.bra=l.cursor,e){case 1:l.slice_del();break;case 2:n=l.limit-l.cursor,l.in_grouping_b(m,98,122)?l.slice_del():(l.cursor=l.limit-n,l.eq_s_b(1,"k")&&l.out_grouping_b(a,97,248)&&l.slice_del());break;case 3:l.slice_from("er")}}(),l.cursor=l.limit,n=l.limit-l.cursor,l.cursor>=i&&(r=l.limit_backward,l.limit_backward=i,l.ket=l.cursor,l.find_among_b(o,2)?(l.bra=l.cursor,l.limit_backward=r,l.cursor=l.limit-n,l.cursor>l.limit_backward&&(l.cursor--,l.bra=l.cursor,l.slice_del())):l.limit_backward=r),l.cursor=l.limit,l.cursor>=i&&(d=l.limit_backward,l.limit_backward=i,l.ket=l.cursor,(u=l.find_among_b(s,11))?(l.bra=l.cursor,l.limit_backward=d,1==u&&l.slice_del()):l.limit_backward=d),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}),e.Pipeline.registerFunction(e.no.stemmer,"stemmer-no"),e.no.stopWordFilter=e.generateStopWordFilter("alle at av bare begge ble blei bli blir blitt både båe da de deg dei deim deira deires dem den denne der dere deres det dette di din disse ditt du dykk dykkar då eg ein eit eitt eller elles en enn er et ett etter for fordi fra før ha hadde han hans har hennar henne hennes her hjå ho hoe honom hoss hossen hun hva hvem hver hvilke hvilken hvis hvor hvordan hvorfor i ikke ikkje ikkje ingen ingi inkje inn inni ja jeg kan kom korleis korso kun kunne kva kvar kvarhelst kven kvi kvifor man mange me med medan meg meget mellom men mi min mine mitt mot mykje ned no noe noen noka noko nokon nokor nokre nå når og også om opp oss over på samme seg selv si si sia sidan siden sin sine sitt sjøl skal skulle slik so som som somme somt så sånn til um upp ut uten var vart varte ved vere verte vi vil ville vore vors vort vår være være vært å".split(" ")),e.Pipeline.registerFunction(e.no.stopWordFilter,"stopWordFilter-no")}}); |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1 @@ |
|||||||
|
!function(r,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(r.lunr)}(this,function(){return function(r){r.stemmerSupport={Among:function(r,t,i,s){if(this.toCharArray=function(r){for(var t=r.length,i=new Array(t),s=0;s<t;s++)i[s]=r.charCodeAt(s);return i},!r&&""!=r||!t&&0!=t||!i)throw"Bad Among initialisation: s:"+r+", substring_i: "+t+", result: "+i;this.s_size=r.length,this.s=this.toCharArray(r),this.substring_i=t,this.result=i,this.method=s},SnowballProgram:function(){var r;return{bra:0,ket:0,limit:0,cursor:0,limit_backward:0,setCurrent:function(t){r=t,this.cursor=0,this.limit=t.length,this.limit_backward=0,this.bra=this.cursor,this.ket=this.limit},getCurrent:function(){var t=r;return r=null,t},in_grouping:function(t,i,s){if(this.cursor<this.limit){var e=r.charCodeAt(this.cursor);if(e<=s&&e>=i&&t[(e-=i)>>3]&1<<(7&e))return this.cursor++,!0}return!1},in_grouping_b:function(t,i,s){if(this.cursor>this.limit_backward){var e=r.charCodeAt(this.cursor-1);if(e<=s&&e>=i&&t[(e-=i)>>3]&1<<(7&e))return this.cursor--,!0}return!1},out_grouping:function(t,i,s){if(this.cursor<this.limit){var e=r.charCodeAt(this.cursor);if(e>s||e<i)return this.cursor++,!0;if(!(t[(e-=i)>>3]&1<<(7&e)))return this.cursor++,!0}return!1},out_grouping_b:function(t,i,s){if(this.cursor>this.limit_backward){var e=r.charCodeAt(this.cursor-1);if(e>s||e<i)return this.cursor--,!0;if(!(t[(e-=i)>>3]&1<<(7&e)))return this.cursor--,!0}return!1},eq_s:function(t,i){if(this.limit-this.cursor<t)return!1;for(var s=0;s<t;s++)if(r.charCodeAt(this.cursor+s)!=i.charCodeAt(s))return!1;return this.cursor+=t,!0},eq_s_b:function(t,i){if(this.cursor-this.limit_backward<t)return!1;for(var s=0;s<t;s++)if(r.charCodeAt(this.cursor-t+s)!=i.charCodeAt(s))return!1;return this.cursor-=t,!0},find_among:function(t,i){for(var s=0,e=i,n=this.cursor,u=this.limit,o=0,h=0,c=!1;;){for(var a=s+(e-s>>1),f=0,l=o<h?o:h,_=t[a],m=l;m<_.s_size;m++){if(n+l==u){f=-1;break}if(f=r.charCodeAt(n+l)-_.s[m])break;l++}if(f<0?(e=a,h=l):(s=a,o=l),e-s<=1){if(s>0||e==s||c)break;c=!0}}for(;;){if(o>=(_=t[s]).s_size){if(this.cursor=n+_.s_size,!_.method)return _.result;var b=_.method();if(this.cursor=n+_.s_size,b)return _.result}if((s=_.substring_i)<0)return 0}},find_among_b:function(t,i){for(var s=0,e=i,n=this.cursor,u=this.limit_backward,o=0,h=0,c=!1;;){for(var a=s+(e-s>>1),f=0,l=o<h?o:h,_=(m=t[a]).s_size-1-l;_>=0;_--){if(n-l==u){f=-1;break}if(f=r.charCodeAt(n-1-l)-m.s[_])break;l++}if(f<0?(e=a,h=l):(s=a,o=l),e-s<=1){if(s>0||e==s||c)break;c=!0}}for(;;){var m;if(o>=(m=t[s]).s_size){if(this.cursor=n-m.s_size,!m.method)return m.result;var b=m.method();if(this.cursor=n-m.s_size,b)return m.result}if((s=m.substring_i)<0)return 0}},replace_s:function(t,i,s){var e=s.length-(i-t),n=r.substring(0,t),u=r.substring(i);return r=n+s+u,this.limit+=e,this.cursor>=i?this.cursor+=e:this.cursor>t&&(this.cursor=t),e},slice_check:function(){if(this.bra<0||this.bra>this.ket||this.ket>this.limit||this.limit>r.length)throw"faulty slice operation"},slice_from:function(r){this.slice_check(),this.replace_s(this.bra,this.ket,r)},slice_del:function(){this.slice_from("")},insert:function(r,t,i){var s=this.replace_s(r,t,i);r<=this.bra&&(this.bra+=s),r<=this.ket&&(this.ket+=s)},slice_to:function(){return this.slice_check(),r.substring(this.bra,this.ket)},eq_v_b:function(r){return this.eq_s_b(r.length,r)}}}},r.trimmerSupport={generateTrimmer:function(r){var t=new RegExp("^[^"+r+"]+"),i=new RegExp("[^"+r+"]+$");return function(r){return"function"==typeof r.update?r.update(function(r){return r.replace(t,"").replace(i,"")}):r.replace(t,"").replace(i,"")}}}}}); |
@ -0,0 +1 @@ |
|||||||
|
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r,n,t;e.sv=function(){this.pipeline.reset(),this.pipeline.add(e.sv.trimmer,e.sv.stopWordFilter,e.sv.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.sv.stemmer))},e.sv.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.sv.trimmer=e.trimmerSupport.generateTrimmer(e.sv.wordCharacters),e.Pipeline.registerFunction(e.sv.trimmer,"trimmer-sv"),e.sv.stemmer=(r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,t=new function(){var e,t,i=[new r("a",-1,1),new r("arna",0,1),new r("erna",0,1),new r("heterna",2,1),new r("orna",0,1),new r("ad",-1,1),new r("e",-1,1),new r("ade",6,1),new r("ande",6,1),new r("arne",6,1),new r("are",6,1),new r("aste",6,1),new r("en",-1,1),new r("anden",12,1),new r("aren",12,1),new r("heten",12,1),new r("ern",-1,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",18,1),new r("or",-1,1),new r("s",-1,2),new r("as",21,1),new r("arnas",22,1),new r("ernas",22,1),new r("ornas",22,1),new r("es",21,1),new r("ades",26,1),new r("andes",26,1),new r("ens",21,1),new r("arens",29,1),new r("hetens",29,1),new r("erns",21,1),new r("at",-1,1),new r("andet",-1,1),new r("het",-1,1),new r("ast",-1,1)],s=[new r("dd",-1,-1),new r("gd",-1,-1),new r("nn",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1),new r("tt",-1,-1)],a=[new r("ig",-1,1),new r("lig",0,1),new r("els",-1,1),new r("fullt",-1,3),new r("löst",-1,2)],o=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,24,0,32],u=[119,127,149],m=new n;this.setCurrent=function(e){m.setCurrent(e)},this.getCurrent=function(){return m.getCurrent()},this.stem=function(){var r,n=m.cursor;return function(){var r,n=m.cursor+3;if(t=m.limit,0<=n||n<=m.limit){for(e=n;;){if(r=m.cursor,m.in_grouping(o,97,246)){m.cursor=r;break}if(m.cursor=r,m.cursor>=m.limit)return;m.cursor++}for(;!m.out_grouping(o,97,246);){if(m.cursor>=m.limit)return;m.cursor++}(t=m.cursor)<e&&(t=e)}}(),m.limit_backward=n,m.cursor=m.limit,function(){var e,r=m.limit_backward;if(m.cursor>=t&&(m.limit_backward=t,m.cursor=m.limit,m.ket=m.cursor,e=m.find_among_b(i,37),m.limit_backward=r,e))switch(m.bra=m.cursor,e){case 1:m.slice_del();break;case 2:m.in_grouping_b(u,98,121)&&m.slice_del()}}(),m.cursor=m.limit,r=m.limit_backward,m.cursor>=t&&(m.limit_backward=t,m.cursor=m.limit,m.find_among_b(s,7)&&(m.cursor=m.limit,m.ket=m.cursor,m.cursor>m.limit_backward&&(m.bra=--m.cursor,m.slice_del())),m.limit_backward=r),m.cursor=m.limit,function(){var e,r;if(m.cursor>=t){if(r=m.limit_backward,m.limit_backward=t,m.cursor=m.limit,m.ket=m.cursor,e=m.find_among_b(a,5))switch(m.bra=m.cursor,e){case 1:m.slice_del();break;case 2:m.slice_from("lös");break;case 3:m.slice_from("full")}m.limit_backward=r}}(),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return t.setCurrent(e),t.stem(),t.getCurrent()}):(t.setCurrent(e),t.stem(),t.getCurrent())}),e.Pipeline.registerFunction(e.sv.stemmer,"stemmer-sv"),e.sv.stopWordFilter=e.generateStopWordFilter("alla allt att av blev bli blir blivit de dem den denna deras dess dessa det detta dig din dina ditt du där då efter ej eller en er era ert ett från för ha hade han hans har henne hennes hon honom hur här i icke ingen inom inte jag ju kan kunde man med mellan men mig min mina mitt mot mycket ni nu när någon något några och om oss på samma sedan sig sin sina sitta själv skulle som så sådan sådana sådant till under upp ut utan vad var vara varför varit varje vars vart vem vi vid vilka vilkas vilken vilket vår våra vårt än är åt över".split(" ")),e.Pipeline.registerFunction(e.sv.stopWordFilter,"stopWordFilter-sv")}}); |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,477 +0,0 @@ |
|||||||
# wisko |
|
||||||
|
|
||||||
## Getting to a Shell |
|
||||||
|
|
||||||
### Hardware |
|
||||||
|
|
||||||
wisko is a higher-end 1-CPU Digital Ocean droplet. |
|
||||||
* 1 CPU |
|
||||||
* 50 GB SSD |
|
||||||
* 2 GB RAM |
|
||||||
|
|
||||||
IP address: 159.65.75.41 |
|
||||||
|
|
||||||
### Spin Up Hardware |
|
||||||
|
|
||||||
* Follow the Digital Ocean steps to spin up a droplet in the SF region. |
|
||||||
|
|
||||||
* Once the droplet is created, get the IP address. |
|
||||||
|
|
||||||
* Pro tip: find your ssh key in `~/.ssh/id_rsa.pub` and paste it in during the Droplet creation process to avoid password issues. |
|
||||||
|
|
||||||
### Set DNS Records |
|
||||||
|
|
||||||
Add the following DNS records: |
|
||||||
|
|
||||||
**A Record**: |
|
||||||
* Record: none (set to @ automatically) |
|
||||||
* Value: 138.68.10.168 |
|
||||||
|
|
||||||
**A Record**: |
|
||||||
* Record: git |
|
||||||
* Value: 138.68.10.168 |
|
||||||
|
|
||||||
**CNAME Record**: |
|
||||||
* Record: |
|
||||||
|
|
||||||
### Connect to Droplet |
|
||||||
|
|
||||||
Check that the Droplet has been booted and is listening: |
|
||||||
|
|
||||||
```plain |
|
||||||
$ ping -c 4 138.68.10.168 |
|
||||||
PING 138.68.10.168 (138.68.10.168): 56 data bytes |
|
||||||
64 bytes from 138.68.10.168: icmp_seq=0 ttl=56 time=28.494 ms |
|
||||||
64 bytes from 138.68.10.168: icmp_seq=1 ttl=56 time=26.120 ms |
|
||||||
64 bytes from 138.68.10.168: icmp_seq=2 ttl=56 time=25.972 ms |
|
||||||
64 bytes from 138.68.10.168: icmp_seq=3 ttl=56 time=27.232 ms |
|
||||||
|
|
||||||
--- 138.68.10.168 ping statistics --- |
|
||||||
4 packets transmitted, 4 packets received, 0.0% packet loss |
|
||||||
round-trip min/avg/max/stddev = 25.972/26.955/28.494/1.014 ms |
|
||||||
``` |
|
||||||
|
|
||||||
Now connect to the droplet. By default, you log in as as the root user: |
|
||||||
|
|
||||||
``` |
|
||||||
$ ssh root@138.68.10.168 |
|
||||||
|
|
||||||
[...bunch of login stuff...] |
|
||||||
|
|
||||||
root@ubuntu-s-1vcpu-2gb-sfo2-01:~# |
|
||||||
``` |
|
||||||
|
|
||||||
Now we're ready to get started. |
|
||||||
|
|
||||||
## Prepare for LAMP |
|
||||||
|
|
||||||
[See DO guide](https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-16-04) |
|
||||||
|
|
||||||
### Make Normal User |
|
||||||
|
|
||||||
Add a non-root user: |
|
||||||
|
|
||||||
``` |
|
||||||
adduser melo |
|
||||||
passwd melo |
|
||||||
usermod -aG sudo melo |
|
||||||
``` |
|
||||||
|
|
||||||
(While we're at it, create a git user as well for gitea): |
|
||||||
|
|
||||||
``` |
|
||||||
adduser git |
|
||||||
passwd git |
|
||||||
``` |
|
||||||
|
|
||||||
Prepare to SSH as that user: |
|
||||||
|
|
||||||
``` |
|
||||||
mkdir /home/melo/.ssh |
|
||||||
chown melo:melo /home/melo/.ssh |
|
||||||
chmod 700 /home/melo/.ssh |
|
||||||
chmod 600 /home/melo/.ssh/authorized_key |
|
||||||
``` |
|
||||||
|
|
||||||
SSH as this user in a separate window (keep one window open and logged in as root!), and test sudo abilities: |
|
||||||
|
|
||||||
``` |
|
||||||
sudo whoami |
|
||||||
``` |
|
||||||
|
|
||||||
Disable root login via ssh: |
|
||||||
|
|
||||||
``` |
|
||||||
vim /etc/ssh/sshd_config |
|
||||||
``` |
|
||||||
|
|
||||||
Change `PermitRootLogin` to `no`. |
|
||||||
|
|
||||||
Restart SSH service: |
|
||||||
|
|
||||||
``` |
|
||||||
sudo service ssh restart |
|
||||||
``` |
|
||||||
|
|
||||||
Now log out and log back in as user melo. |
|
||||||
|
|
||||||
### Dotfiles Bootstrap |
|
||||||
|
|
||||||
[Dotfiles link](https://charlesreid1.com:3000/dotfiles/wisko/src/master/install_packages.sh) |
|
||||||
|
|
||||||
Start out with the wisko dotfiles repository: |
|
||||||
|
|
||||||
``` |
|
||||||
apt-get install git |
|
||||||
cd ~ |
|
||||||
git clone https://charlesreid1.com:3000/dotfiles/wisko.git |
|
||||||
cd wisko |
|
||||||
``` |
|
||||||
|
|
||||||
Prepare for bootstrap: |
|
||||||
|
|
||||||
``` |
|
||||||
./pre_bootstrap.sh |
|
||||||
``` |
|
||||||
|
|
||||||
Now bootstrap: |
|
||||||
|
|
||||||
``` |
|
||||||
./bootstrap.sh |
|
||||||
``` |
|
||||||
|
|
||||||
Then set the machine name: |
|
||||||
|
|
||||||
``` |
|
||||||
sudo ./set_machine_name.sh |
|
||||||
``` |
|
||||||
|
|
||||||
Now log out and log back in. |
|
||||||
|
|
||||||
### Aptitude |
|
||||||
|
|
||||||
Install a bunch of the packages that are needed: |
|
||||||
|
|
||||||
``` |
|
||||||
cd wisko |
|
||||||
sudo ./install_packages.sh |
|
||||||
``` |
|
||||||
|
|
||||||
Now we're ready to start on the LAMP server. |
|
||||||
|
|
||||||
## Installing Apache |
|
||||||
|
|
||||||
``` |
|
||||||
sudo apt-get install -y apache2 |
|
||||||
``` |
|
||||||
|
|
||||||
Edit Apache config file: |
|
||||||
|
|
||||||
``` |
|
||||||
sudo vim /etc/apache2/sites-enabled/000-default.conf |
|
||||||
``` |
|
||||||
|
|
||||||
Set the server name: |
|
||||||
|
|
||||||
``` |
|
||||||
ServerName www.allthehatsformaps.com |
|
||||||
... |
|
||||||
DocumentRoot /var/www/htdocs/ |
|
||||||
``` |
|
||||||
|
|
||||||
Also make note of Apache username, should be `www-data`. |
|
||||||
|
|
||||||
Check for syntax errors: |
|
||||||
|
|
||||||
``` |
|
||||||
sudo apache2ctl configtest |
|
||||||
``` |
|
||||||
|
|
||||||
Restart Apache: |
|
||||||
|
|
||||||
``` |
|
||||||
sudo service apache2 restart |
|
||||||
``` |
|
||||||
|
|
||||||
|
|
||||||
## Installing MySQL |
|
||||||
|
|
||||||
``` |
|
||||||
sudo apt-get install -y mysql-server |
|
||||||
``` |
|
||||||
|
|
||||||
This will ask you to set a root password. |
|
||||||
|
|
||||||
Once the installation is complete, run: |
|
||||||
|
|
||||||
``` |
|
||||||
mysql_secure_installation |
|
||||||
``` |
|
||||||
|
|
||||||
to lock down MySQL. Do not configure `VALIDATE PASSWORD PLUGIN`. |
|
||||||
|
|
||||||
## Installing PHP |
|
||||||
|
|
||||||
``` |
|
||||||
sudo apt-get install -y php libapache2-mod-php php-mcrypt php-mysql php-cli |
|
||||||
``` |
|
||||||
|
|
||||||
Make Apache look for `index.php` by editing: |
|
||||||
|
|
||||||
``` |
|
||||||
/etc/apache2/mods-enabled/dir.conf |
|
||||||
``` |
|
||||||
|
|
||||||
and changing: |
|
||||||
|
|
||||||
``` |
|
||||||
DirectoryIndex index.html |
|
||||||
``` |
|
||||||
|
|
||||||
to this: |
|
||||||
|
|
||||||
``` |
|
||||||
DirectoryIndex index.php index.html |
|
||||||
``` |
|
||||||
|
|
||||||
Restart apache: |
|
||||||
|
|
||||||
``` |
|
||||||
sudo service apache2 restart |
|
||||||
``` |
|
||||||
|
|
||||||
## Installing Wordpress |
|
||||||
|
|
||||||
[boom](https://codex.wordpress.org/Installing_WordPress#Famous_5-Minute_Installation) |
|
||||||
|
|
||||||
Download latest Wordpress: |
|
||||||
|
|
||||||
``` |
|
||||||
cd /tmp |
|
||||||
wget https://wordpress.org/latest.tar.gz |
|
||||||
tar xzf latest.tar.gz |
|
||||||
``` |
|
||||||
|
|
||||||
This extracts to `wordpress/`. Now open MySQL and create a database for wordpress: |
|
||||||
|
|
||||||
``` |
|
||||||
$ mysql -u root -p |
|
||||||
|
|
||||||
mysql> CREATE DATABASE wordpress; |
|
||||||
mysql> CREATE USER 'wpsql'@'localhost' IDENTIFIED BY "yourpasswordgoeshere"; |
|
||||||
mysql> GRANT ALL PRIVILEGES ON wordpress.* TO "wpsql"@"localhost" |
|
||||||
``` |
|
||||||
|
|
||||||
This creates a MySQL user `wpsql` and a MySQL database called `wordpress`. |
|
||||||
|
|
||||||
Configure Wordpress by copying example config file to actual config file: |
|
||||||
|
|
||||||
``` |
|
||||||
cp wp-config-sample.php wp-config.php |
|
||||||
``` |
|
||||||
|
|
||||||
Edit `wp-config.php` and change the following: |
|
||||||
* DB_NAME |
|
||||||
* DB_USER |
|
||||||
* DB_PASSWORD |
|
||||||
* DB_HOST |
|
||||||
* DB_CHARSET |
|
||||||
* DB_COLLATE |
|
||||||
|
|
||||||
Use [online secret generator](https://api.wordpress.org/secret-key/1.1/salt/) to set secret key values. |
|
||||||
|
|
||||||
Now move the wordpress folder to your web root: |
|
||||||
|
|
||||||
``` |
|
||||||
mv wordpress /var/www/htdocs/wordpress/ |
|
||||||
``` |
|
||||||
|
|
||||||
Change permissions so wordpress directory is owned by the Apache user: |
|
||||||
|
|
||||||
``` |
|
||||||
chown -R www-data:www-data /var/www/htdocs/wordpress |
|
||||||
``` |
|
||||||
|
|
||||||
Visit the Wordpress site and set it up: |
|
||||||
|
|
||||||
``` |
|
||||||
<ip-addr-of-machine>/wordpress |
|
||||||
``` |
|
||||||
|
|
||||||
Once you have set up the Wordpress site, you should protect the `wp-config.php` file: |
|
||||||
|
|
||||||
``` |
|
||||||
sudo chown melo:melo wp-config.php |
|
||||||
``` |
|
||||||
|
|
||||||
### FTP Server |
|
||||||
|
|
||||||
To upgrade Wordpress you need an ftp server running. vsftpd is a lightweight ftp server. To install it: |
|
||||||
|
|
||||||
``` |
|
||||||
sudo apt-get install vsftpd |
|
||||||
``` |
|
||||||
|
|
||||||
By default, the `local_enable` option is set in `/etc/vsftpd.conf`, meaning you can log in to the ftp server using system credentials. |
|
||||||
|
|
||||||
To check and make sure the process of uploading files via FTP works, try upgrading a plugin or installing/removing a plugin. |
|
||||||
|
|
||||||
## Installing Gitea |
|
||||||
|
|
||||||
### Goenv: To Manage Go Version |
|
||||||
|
|
||||||
Start by installing goenv: |
|
||||||
|
|
||||||
``` |
|
||||||
git clone https://github.com/syndbg/goenv.git ~/.goenv |
|
||||||
``` |
|
||||||
|
|
||||||
Now add .goenv to your path in .bash_profile so goenv is a command |
|
||||||
|
|
||||||
``` |
|
||||||
# add these line to ~/.bash_profile |
|
||||||
export GOENV_ROOT="$HOME/.goenv" |
|
||||||
export PATH="$GOENV_ROOT/bin:$PATH" |
|
||||||
``` |
|
||||||
|
|
||||||
Now source it: |
|
||||||
|
|
||||||
``` |
|
||||||
source ~/.bash_profile |
|
||||||
``` |
|
||||||
|
|
||||||
List latest versions of go: |
|
||||||
|
|
||||||
``` |
|
||||||
goenv install -l |
|
||||||
``` |
|
||||||
|
|
||||||
Pick one to install: |
|
||||||
|
|
||||||
``` |
|
||||||
goenv install 1.7.5 |
|
||||||
goenv global 1.7.5 |
|
||||||
``` |
|
||||||
|
|
||||||
Now set this as the go version: |
|
||||||
|
|
||||||
``` |
|
||||||
eval "$(goenv init -)" |
|
||||||
``` |
|
||||||
|
|
||||||
You will need to execute the above command **each time you wish to use the goenv version of Go.** |
|
||||||
|
|
||||||
(Alternatively, you can add it to `.bashrc` to run it in each new shell.) |
|
||||||
|
|
||||||
### Gitea: Git Web Server |
|
||||||
|
|
||||||
[Installation of gitea from source](https://docs.gitea.io/en-us/install-from-source/) |
|
||||||
|
|
||||||
``` |
|
||||||
go get -d -u code.gitea.io/gitea |
|
||||||
cd $GOPATH/src/code.gitea.io/gitea |
|
||||||
``` |
|
||||||
|
|
||||||
Now check out the version of gitea that you want to use: |
|
||||||
|
|
||||||
``` |
|
||||||
git branch -a |
|
||||||
git checkout origin/release/v1.2 |
|
||||||
``` |
|
||||||
|
|
||||||
Build with tag `bindata`: |
|
||||||
|
|
||||||
``` |
|
||||||
TAGS="bindata" make generate build |
|
||||||
``` |
|
||||||
|
|
||||||
The gitea binary is entirely self-contained. Before you run the binary, create a folder for gitea to use to store repositories (this should be somewhere you have read/write access, like `~/.gitea`): |
|
||||||
|
|
||||||
``` |
|
||||||
mkdir ~/.gitea |
|
||||||
``` |
|
||||||
|
|
||||||
We will point gitea to this directory in the next step. To run the binary from the current directory as the current user: |
|
||||||
|
|
||||||
``` |
|
||||||
./gitea web |
|
||||||
``` |
|
||||||
|
|
||||||
Now you can navigate to `<server-ip-address>:3000` to set up gitea. |
|
||||||
|
|
||||||
### Set Up Gitea (via Browser) |
|
||||||
|
|
||||||
Visit `<server-ip-address>:3000` in the browser to set up Gitea. You will need to set up a database, and we can use MySQL again. First, create a gitea user in MySQL: |
|
||||||
|
|
||||||
``` |
|
||||||
$ mysql -u root -p |
|
||||||
|
|
||||||
mysql> CREATE DATABASE gitea; |
|
||||||
mysql> CREATE USER 'giteasql'@'localhost' IDENTIFIED BY "yourpasswordgoeshere"; |
|
||||||
mysql> GRANT ALL PRIVILEGES ON gitea.* TO "giteasql"@"localhost" |
|
||||||
``` |
|
||||||
|
|
||||||
Now you should be able to punch in all your settings. Make sure you change the address of the app from `localhost:3000` to `<server-ip-address>:3000`. |
|
||||||
|
|
||||||
### Updating Configuration/Templates |
|
||||||
|
|
||||||
The path where gitea is installed is here: |
|
||||||
|
|
||||||
``` |
|
||||||
/home/melo/gocode/src/code.gitea.io/gitea |
|
||||||
``` |
|
||||||
|
|
||||||
available as a shortcut in the home directory: |
|
||||||
|
|
||||||
``` |
|
||||||
$ ll ~/ |
|
||||||
... |
|
||||||
lrwxrwxrwx 1 melo melo 30 Feb 24 22:17 gitea -> gocode/src/code.gitea.io/gitea/ |
|
||||||
``` |
|
||||||
|
|
||||||
Configuration file for gitea is located here: |
|
||||||
|
|
||||||
``` |
|
||||||
~/gitea/custom/conf/app.ini |
|
||||||
``` |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
If you change the config file or any page templates, you will have to re-build the binary for the changes to take effect. |
|
||||||
|
|
||||||
To rebuild the go binary, just set your go version with goenv and re-execute the make command from above: |
|
||||||
|
|
||||||
``` |
|
||||||
eval "$(goenv init -)" |
|
||||||
cd ~/gitea |
|
||||||
TAGS="bindata" make generate build |
|
||||||
``` |
|
||||||
|
|
||||||
### Errors |
|
||||||
|
|
||||||
Note: if you see the following error, check which version of go you are using: |
|
||||||
|
|
||||||
``` |
|
||||||
go build -i -v -tags 'bindata' -ldflags '-s -w -X "main.Version=1.2.3" -X "main.Tags=bindata"' -o gitea |
|
||||||
vendor/code.gitea.io/git/command.go:9:2: cannot find package "context" in any of: |
|
||||||
/home/melo/gocode/src/code.gitea.io/gitea/vendor/context (vendor tree) |
|
||||||
/usr/lib/go-1.6/src/context (from $GOROOT) |
|
||||||
/home/melo/gocode/src/context (from $GOPATH) |
|
||||||
Makefile:205: recipe for target 'gitea' failed |
|
||||||
make: *** [gitea] Error 1 |
|
||||||
``` |
|
||||||
|
|
||||||
When you run `which go` you should see |
|
||||||
|
|
||||||
``` |
|
||||||
$ which go |
|
||||||
/home/melo/.goenv/shims/go |
|
||||||
``` |
|
||||||
|
|
||||||
If you see this, you will have problems: |
|
||||||
|
|
||||||
``` |
|
||||||
$ which go |
|
||||||
/usr/bin/go |
|
||||||
``` |
|
||||||
|
|
@ -1,155 +0,0 @@ |
|||||||
# wisko FAQ |
|
||||||
|
|
||||||
## Apache |
|
||||||
|
|
||||||
Link: [Apache on the Ubuntu Wiki](https://help.ubuntu.com/lts/serverguide/httpd.html) |
|
||||||
|
|
||||||
Apache 2 was installed using the command `apt-get install apache2`. |
|
||||||
|
|
||||||
### running apache2 |
|
||||||
|
|
||||||
To start, restart, or stop apache2 (it should start automatically on boot): |
|
||||||
|
|
||||||
``` |
|
||||||
$ sudo service apache2 start |
|
||||||
$ sudo service apache2 restart |
|
||||||
$ sudo service apache2 stop |
|
||||||
``` |
|
||||||
|
|
||||||
### apache2 configuration files |
|
||||||
|
|
||||||
Apache keeps its configuration files in `/etc/apache2/`. |
|
||||||
|
|
||||||
Apache is configured to host multiple websites, so there are multiple configuration files. |
|
||||||
|
|
||||||
The global Apache config file is `/etc/apache2/apache2.conf`. |
|
||||||
|
|
||||||
Site-specific Apache config files are in `/etc/apache2/sites-available`. To make a new site, just add a new file to that folder (name it whatever you'd like). There is an existing default configuration in that folder. |
|
||||||
|
|
||||||
The site configuration file is where you edit the folder it serves up, the port it listens on, what requests it is listening for (subdomain or full domain), etc. |
|
||||||
|
|
||||||
When you have edited a site's configuration file, enable it using the `a2ensite` command: |
|
||||||
|
|
||||||
``` |
|
||||||
$ a2ensite name_of_site |
|
||||||
``` |
|
||||||
|
|
||||||
Likewise, disable the site with `a2dissite`: |
|
||||||
|
|
||||||
``` |
|
||||||
$ a2dissite name_of_site |
|
||||||
``` |
|
||||||
|
|
||||||
## PHP |
|
||||||
|
|
||||||
Link: [LAMP Server on Ubuntu Wiki](https://help.ubuntu.com/community/ApacheMySQLPHP) |
|
||||||
|
|
||||||
PHP was installed using aptitude. |
|
||||||
|
|
||||||
### running php |
|
||||||
|
|
||||||
PHP is a programming language designed for web browsers, so you don't need to start it - Apache will handle that. (Apache has a PHP module that has been enabled.) |
|
||||||
|
|
||||||
### php configuration files |
|
||||||
|
|
||||||
PHP also has multiple configuration files, but we're only interested in the Apache-PHP configuration file at `/etc/php5/apache2/php.ini`. The main thing that you would change here is the max file upload size (10 MB by default) and whether PHP prints out errors ("debug" mode). |
|
||||||
|
|
||||||
## MySQL |
|
||||||
|
|
||||||
Link: [MySQL on Ubuntu Wiki](https://help.ubuntu.com/lts/serverguide/mysql.html) |
|
||||||
|
|
||||||
MySQL server was installed using aptitude. |
|
||||||
|
|
||||||
### networking |
|
||||||
|
|
||||||
MySQL will listen on port 3306 for incoming requests on the local machine *only* (it is bound to the address 127.0.0.1:3306). That means no outside computers can communicate with MySQL. This can be changed in the configuration file. |
|
||||||
|
|
||||||
### running mysql |
|
||||||
|
|
||||||
To run the MySQL server in the background (it should start automatically on boot), run: |
|
||||||
|
|
||||||
``` |
|
||||||
$ sudo service mysql start |
|
||||||
``` |
|
||||||
|
|
||||||
To get a MySQL shell, run MySQL from the command line: |
|
||||||
|
|
||||||
``` |
|
||||||
$ mysql -u root -p |
|
||||||
``` |
|
||||||
|
|
||||||
This will prompt you for your MySQL password. |
|
||||||
|
|
||||||
To make a new MySQL user, log in as the root user and run: |
|
||||||
|
|
||||||
``` |
|
||||||
mysql> CREATE USER 'newuser'@'localhost' IDENTIFIED BY "newpassword"; |
|
||||||
``` |
|
||||||
|
|
||||||
To create a database and give the new user permission to edit that database: |
|
||||||
|
|
||||||
``` |
|
||||||
mysql> CREATE DATABASE newdb; |
|
||||||
mysql> GRANT ALL PRIVILEGES ON newdb.* TO "newuser"@"localhost"; |
|
||||||
``` |
|
||||||
|
|
||||||
MySQL is picky about quotations. |
|
||||||
|
|
||||||
### mysql configuration files |
|
||||||
|
|
||||||
The main MySQL configuration file is in `/etc/mysql/mysql.cnf`. |
|
||||||
|
|
||||||
The MySQL configuration file that you should edit is at `/etc/mysql/mysql.conf.d/mysql.cnf`. |
|
||||||
|
|
||||||
## Gitea |
|
||||||
|
|
||||||
### gitea locations |
|
||||||
|
|
||||||
Gitea was installed using `go get`, which integrates Go with Github. The command checked out a copy of the code in the directory specified by `$GOCODE`, which is at `~/gocode`. |
|
||||||
|
|
||||||
The gitea source is located in `/home/melo/gocode/src/code.gitea.io/gitea/`, which is symlinked to `~melo/gitea/`. |
|
||||||
|
|
||||||
### running gitea |
|
||||||
|
|
||||||
Gitea will *not* run on boot - a startup service needs to be added in `/etc/init.d/gitea` that will run the gitea command as user `melo`. |
|
||||||
|
|
||||||
The Gitea web server is a binary Go program that bundles together everything it needs to run. The binary is built and run in the directory `~melo/gocode/src/code.gitea.io/gitea` (both as the user `melo`). |
|
||||||
|
|
||||||
To run the binary, you would execute it with the "web" argument: |
|
||||||
|
|
||||||
``` |
|
||||||
$ cd ~/gocode/src/code.gitea.io/gitea/ |
|
||||||
$ ./gitea web |
|
||||||
``` |
|
||||||
|
|
||||||
However, this starts the process in the foreground, so it's more convenient to run it in a screen (which allows you to detach from a shell, end your session, and reattach to that shell in a later session). |
|
||||||
|
|
||||||
``` |
|
||||||
$ screen -d -m -S giteaweb $HOME/gocode/src/code.gitea.io/gitea/gitea web |
|
||||||
``` |
|
||||||
|
|
||||||
This will start a new screen in detached mode (`-d -m`), call it `giteaweb` (`-S`), and run the command `gitea web`. |
|
||||||
|
|
||||||
To reattach, list your screens using the `-ls` flag and reattach using the `-r` flag: |
|
||||||
|
|
||||||
``` |
|
||||||
$ screen -ls |
|
||||||
$ screen -r giteaweb |
|
||||||
``` |
|
||||||
|
|
||||||
### rebuilding gitea |
|
||||||
|
|
||||||
The gitea source directory at `~/gocode/src/code.gitea.io/gitea` is a cloned git repository, so you can check out different versions or branches as needed. If you make changes to the configuration file or template files, you will also need to re-make the gitea binary (since all of that is bundled up in the binary). |
|
||||||
|
|
||||||
To remake the binary: |
|
||||||
|
|
||||||
``` |
|
||||||
$ cd $GOCODE/src/code.gitea.io/gitea/ |
|
||||||
|
|
||||||
# here you can do stuff like |
|
||||||
# git branch -a |
|
||||||
# git checkout v1.3 |
|
||||||
|
|
||||||
$ TAGS="bindata" make generate build |
|
||||||
``` |
|
||||||
|
|
@ -1,141 +0,0 @@ |
|||||||
# Installing Geoserver & Connecting Over HTTPS |
|
||||||
|
|
||||||
[Installing Geoserver instructions](http://docs.geoserver.org/stable/en/user/installation/linux.html) |
|
||||||
|
|
||||||
## Install JRE 8 |
|
||||||
|
|
||||||
[install jre 8](https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-get-on-ubuntu-16-04) |
|
||||||
|
|
||||||
``` |
|
||||||
sudo apt-get update |
|
||||||
sudo apt-get install default-jre |
|
||||||
``` |
|
||||||
## Create geoserver folder |
|
||||||
|
|
||||||
in `/usr/share`: |
|
||||||
``` |
|
||||||
mkdir geoserver |
|
||||||
``` |
|
||||||
|
|
||||||
## Downloaded geoserver on my computer, then ftp it to wisko |
|
||||||
|
|
||||||
* Download geoserver files on my computer |
|
||||||
* unzip |
|
||||||
* copy files from the geoserver folder onto wisko: |
|
||||||
|
|
||||||
from my computer: |
|
||||||
``` |
|
||||||
scp -r /Users/melo/Desktop/geoserver-2.13.0 melo@159.65.75.41:/usr/share/geoserver |
|
||||||
``` |
|
||||||
|
|
||||||
permission denied. fixed with: |
|
||||||
|
|
||||||
``` |
|
||||||
sudo chown -R $USER:$USER /usr/share/geoserver |
|
||||||
|
|
||||||
``` |
|
||||||
|
|
||||||
but then i decided to use FileZilla to transfer the files once I fixed my pemissions. Maybe another day, scp. |
|
||||||
|
|
||||||
|
|
||||||
## add env variable |
|
||||||
`echo "export GEOSERVER_HOME=/usr/share/geoserver" >\> ~/.profile` |
|
||||||
|
|
||||||
## make myself the owner |
|
||||||
|
|
||||||
`sudo chown -R USER_NAME /usr/share/geoserver/` |
|
||||||
|
|
||||||
## start geoserver |
|
||||||
|
|
||||||
``` |
|
||||||
cd /usr/share/geoserver/bin |
|
||||||
sh startup.sh |
|
||||||
|
|
||||||
``` |
|
||||||
|
|
||||||
-------- |
|
||||||
|
|
||||||
## setting up certs |
|
||||||
|
|
||||||
To enable SSL connections to the geoserver, let Apache handle the SSL connections, and then pass the requests on to geoserver locally. |
|
||||||
|
|
||||||
Apache already has certificates living at: |
|
||||||
|
|
||||||
``` |
|
||||||
/etc/letsencrypt/live/smallmelo.com |
|
||||||
``` |
|
||||||
|
|
||||||
and an HTTPS configuration file at: |
|
||||||
|
|
||||||
``` |
|
||||||
/etc/apache2/sites-avaiable/smallmelo-le-ssl.conf |
|
||||||
``` |
|
||||||
|
|
||||||
Modify the SSL configuration file to accept any URLs ending in `geoserver/` and forward them to the geoserver on port 8080. |
|
||||||
|
|
||||||
There should be a `<VirtualHost>` block that controls the settings for HTTPS requests. Add a `<Location>` block to configure the behavior for geoserver URLs (note the order): |
|
||||||
|
|
||||||
``` |
|
||||||
<VirtualHost *:443> |
|
||||||
|
|
||||||
... |
|
||||||
|
|
||||||
# This block is new: |
|
||||||
<Location /geoserver> |
|
||||||
ProxyPass http://localhost:8080/geoserver |
|
||||||
ProxyPassReverse http://localhost:8080/geoserver |
|
||||||
Order allow,deny |
|
||||||
Allow from all |
|
||||||
</Location> |
|
||||||
|
|
||||||
... |
|
||||||
|
|
||||||
# This must come after /geoserver block |
|
||||||
<Directory /var/www/smallmelo/public_html> |
|
||||||
... |
|
||||||
</Directory> |
|
||||||
|
|
||||||
</Location> |
|
||||||
``` |
|
||||||
|
|
||||||
Note that the reverse proxy we have set up will forward requests *unencrypted* to the geoserver at port 8080, but because this happens within a single machine, there is no need to encrypt it. |
|
||||||
|
|
||||||
Now ensure the proxy mod is installed: |
|
||||||
|
|
||||||
``` |
|
||||||
$ a2enmod proxy |
|
||||||
``` |
|
||||||
|
|
||||||
and restart the server: |
|
||||||
|
|
||||||
``` |
|
||||||
$ sudo service apache2 restart |
|
||||||
``` |
|
||||||
|
|
||||||
One other thing we had to do was ensure that Jetty/geoserver were only listening for requests locally. This requies binding Jetty to the IP address 127.0.0.1. |
|
||||||
|
|
||||||
To do this, we modify one parameter in `app.ini`: |
|
||||||
|
|
||||||
``` |
|
||||||
jetty.host=127.0.0.1 |
|
||||||
``` |
|
||||||
|
|
||||||
Restart geoserver: |
|
||||||
|
|
||||||
``` |
|
||||||
killall geoserver && sh /usr/share/geoserver/bin/startup.sh |
|
||||||
``` |
|
||||||
|
|
||||||
## Finishing Touches |
|
||||||
|
|
||||||
Because Geosever was setup in order to be used in a dev environment for an xcode project, we needed to be able to ping a wms service from the site. |
|
||||||
|
|
||||||
The attempt resulted in [an error](https://gist.github.com/Smallmelo/acb41ea71dea6ca64b0652973ed04158). |
|
||||||
|
|
||||||
[This line](https://gist.github.com/Smallmelo/acb41ea71dea6ca64b0652973ed04158#file-gistfile1-txt-L2572) demonstrates that your network trace is seeing "localhost:8080", which it should not. So, it's an indication that the server might be returning URLs to resources that say "localhost:8080" |
|
||||||
|
|
||||||
### The solution: |
|
||||||
Update the proxy url in Geoserver's Global Settings: |
|
||||||
![Geoserver proxy settings](https://i.imgur.com/pQYIT0v.png) |
|
||||||
|
|
||||||
|
|
@ -1,26 +0,0 @@ |
|||||||
# Wisko Manual |
|
||||||
|
|
||||||
The wisko manual. |
|
||||||
|
|
||||||
IP: 159.65.75.41 |
|
||||||
|
|
||||||
[git repo - wisko manual](https://git.charlesreid1.com/charlesreid1/wisko-manual) by @charles |
|
||||||
|
|
||||||
[git repo - wisko dotfiles](https://git.charlesreid1.com/dotfiles/wisko) by @charles |
|
||||||
|
|
||||||
[wisko boot to root](/boot2root.md) by @charles |
|
||||||
|
|
||||||
[wisko FAQ](/faq.md) by @charles |
|
||||||
|
|
||||||
[locked out of wisko](/locked-out.md) by @melo and @charles |
|
||||||
|
|
||||||
[smallmelo.com migration: part 1 (ssh + wordpress)](/smallmelo-migration-1.md) by @melo |
|
||||||
|
|
||||||
[smallmelo.com migration: part 2 (all the things)](/smallmelo-migration-2.md) by @melo |
|
||||||
|
|
||||||
[smallmelo.com migration: part 3 (allthehatsformaps to smallmelo)](/smallmelo-migration-3.md) by @melo |
|
||||||
|
|
||||||
[wisko gitea](/wisko-gitea.md) by @charles |
|
||||||
|
|
||||||
[installing geoserver and connecting over https](/geoserver-https.md) by @melo and @charles |
|
||||||
|
|
@ -1,255 +0,0 @@ |
|||||||
# locked out of wisko |
|
||||||
|
|
||||||
no problem, i got this. |
|
||||||
|
|
||||||
``` |
|
||||||
$ ssh melo@159.65.75.41 |
|
||||||
|
|
||||||
ECDSA key fingerprint is ... |
|
||||||
|
|
||||||
Are you sure you want to continue connecting (yes/no)? yes |
|
||||||
|
|
||||||
Warning: Permanently added '159.65.75.41' (ECDSA) to the list of known hosts. |
|
||||||
|
|
||||||
melo@159.65.75.41: Permission denied (publickey). |
|
||||||
|
|
||||||
``` |
|
||||||
oh, so i have to generate a new key pair. lemme google that. |
|
||||||
|
|
||||||
## creating a new public key |
|
||||||
|
|
||||||
[help from do](https://www.digitalocean.com/community/tutorials/how-to-use-ssh-keys-with-digitalocean-droplets) |
|
||||||
|
|
||||||
``` |
|
||||||
ssh-keygen -t rsa |
|
||||||
Enter file in which to save the key (/Users/melo/.ssh/id_rsa): |
|
||||||
|
|
||||||
``` |
|
||||||
hit enter to store in user ssh root folder |
|
||||||
|
|
||||||
``` |
|
||||||
Enter passphrase (empty for no passphrase): |
|
||||||
Enter same passphrase again |
|
||||||
|
|
||||||
``` |
|
||||||
hit enter to store without passphrase |
|
||||||
|
|
||||||
## copy key to do account |
|
||||||
|
|
||||||
run from the command line: |
|
||||||
``` |
|
||||||
cat ~/.ssh/id_rsa.pub |
|
||||||
|
|
||||||
``` |
|
||||||
|
|
||||||
open settings > security in do, selection to add new key |
|
||||||
paste in the above key and name it accordingly |
|
||||||
|
|
||||||
## login/ add my key to the server |
|
||||||
|
|
||||||
(**WARNING:** possibly bad to run these commands.) |
|
||||||
|
|
||||||
``` |
|
||||||
cat ~/.ssh/id_rsa.pub | ssh melo@159.65.75.41 "cat >> /home/melo/.ssh/authorized_keys" |
|
||||||
|
|
||||||
melo@159.65.75.41: Permission denied (publickey). |
|
||||||
``` |
|
||||||
|
|
||||||
no? |
|
||||||
|
|
||||||
``` |
|
||||||
cat ~/.ssh/id\_rsa.pub | ssh root@159.65.75.41 "cat >> ~/.ssh/authorized\_keys" |
|
||||||
root@159.65.75.41: Permission denied (publickey). |
|
||||||
|
|
||||||
``` |
|
||||||
oh yea, charles turned off root access via command line. |
|
||||||
|
|
||||||
## ssh debug mode w/ charles |
|
||||||
|
|
||||||
``` |
|
||||||
ssh -vvv melo@159.65.75.41 |
|
||||||
|
|
||||||
|
|
||||||
root@159.65.75.41: Permission denied (publickey). |
|
||||||
Melo:~ melo$ ssh -vvv melo@159.65.75.41 |
|
||||||
OpenSSH_7.6p1, LibreSSL 2.6.2 |
|
||||||
debug1: Reading configuration data /Users/melo/.ssh/config |
|
||||||
debug1: Reading configuration data /etc/ssh/ssh_config |
|
||||||
debug1: /etc/ssh/ssh_config line 48: Applying options for * |
|
||||||
debug2: ssh_connect_direct: needpriv 0 |
|
||||||
debug1: Connecting to 159.65.75.41 port 22. |
|
||||||
debug1: Connection established. |
|
||||||
debug1: identity file /Users/melo/.ssh/id_rsa type 0 |
|
||||||
debug1: key_load_public: No such file or directory |
|
||||||
debug1: identity file /Users/melo/.ssh/id_rsa-cert type -1 |
|
||||||
debug1: key_load_public: No such file or directory |
|
||||||
debug1: identity file /Users/melo/.ssh/id_dsa type -1 |
|
||||||
debug1: key_load_public: No such file or directory |
|
||||||
debug1: identity file /Users/melo/.ssh/id_dsa-cert type -1 |
|
||||||
debug1: key_load_public: No such file or directory |
|
||||||
debug1: identity file /Users/melo/.ssh/id_ecdsa type -1 |
|
||||||
debug1: key_load_public: No such file or directory |
|
||||||
debug1: identity file /Users/melo/.ssh/id_ecdsa-cert type -1 |
|
||||||
debug1: key_load_public: No such file or directory |
|
||||||
debug1: identity file /Users/melo/.ssh/id_ed25519 type -1 |
|
||||||
debug1: key_load_public: No such file or directory |
|
||||||
debug1: identity file /Users/melo/.ssh/id_ed25519-cert type -1 |
|
||||||
debug1: Local version string SSH-2.0-OpenSSH_7.6 |
|
||||||
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.2p2 Ubuntu-4ubuntu2.4 |
|
||||||
debug1: match: OpenSSH_7.2p2 Ubuntu-4ubuntu2.4 pat OpenSSH* compat 0x04000000 |
|
||||||
debug3: fd 5 is O_NONBLOCK |
|
||||||
debug1: Authenticating to 159.65.75.41:22 as 'melo' |
|
||||||
debug3: hostkeys_foreach: reading file "/Users/melo/.ssh/known_hosts" |
|
||||||
debug3: record_hostkey: found key type ECDSA in file /Users/melo/.ssh/known_hosts:20 |
|
||||||
debug3: load_hostkeys: loaded 1 keys from 159.65.75.41 |
|
||||||
debug3: order_hostkeyalgs: prefer hostkeyalgs: ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521 |
|
||||||
debug3: send packet: type 20 |
|
||||||
debug1: SSH2_MSG_KEXINIT sent |
|
||||||
debug3: receive packet: type 20 |
|
||||||
debug1: SSH2_MSG_KEXINIT received |
|
||||||
debug2: local client KEXINIT proposal |
|
||||||
debug2: KEX algorithms: curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c |
|
||||||
debug2: host key algorithms: ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa |
|
||||||
debug2: ciphers ctos: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com |
|
||||||
debug2: ciphers stoc: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com |
|
||||||
debug2: MACs ctos: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1 |
|
||||||
debug2: MACs stoc: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1 |
|
||||||
debug2: compression ctos: none,zlib@openssh.com,zlib |
|
||||||
debug2: compression stoc: none,zlib@openssh.com,zlib |
|
||||||
debug2: languages ctos: |
|
||||||
debug2: languages stoc: |
|
||||||
debug2: first_kex_follows 0 |
|
||||||
debug2: reserved 0 |
|
||||||
debug2: peer server KEXINIT proposal |
|
||||||
debug2: KEX algorithms: curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1 |
|
||||||
debug2: host key algorithms: ssh-rsa,rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519 |
|
||||||
debug2: ciphers ctos: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com |
|
||||||
debug2: ciphers stoc: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com |
|
||||||
debug2: MACs ctos: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1 |
|
||||||
debug2: MACs stoc: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1 |
|
||||||
debug2: compression ctos: none,zlib@openssh.com |
|
||||||
debug2: compression stoc: none,zlib@openssh.com |
|
||||||
debug2: languages ctos: |
|
||||||
debug2: languages stoc: |
|
||||||
debug2: first_kex_follows 0 |
|
||||||
debug2: reserved 0 |
|
||||||
debug1: kex: algorithm: curve25519-sha256@libssh.org |
|
||||||
debug1: kex: host key algorithm: ecdsa-sha2-nistp256 |
|
||||||
debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none |
|
||||||
debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none |
|
||||||
debug3: send packet: type 30 |
|
||||||
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY |
|
||||||
debug3: receive packet: type 31 |
|
||||||
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:y1jQr+0TsjhrdM3TGWSZ/BGNdzxrK7u+hUXS/TzS1ss |
|
||||||
debug3: hostkeys_foreach: reading file "/Users/melo/.ssh/known_hosts" |
|
||||||
debug3: record_hostkey: found key type ECDSA in file /Users/melo/.ssh/known_hosts:20 |
|
||||||
debug3: load_hostkeys: loaded 1 keys from 159.65.75.41 |
|
||||||
debug1: Host '159.65.75.41' is known and matches the ECDSA host key. |
|
||||||
debug1: Found key in /Users/melo/.ssh/known_hosts:20 |
|
||||||
debug3: send packet: type 21 |
|
||||||
debug2: set_newkeys: mode 1 |
|
||||||
debug1: rekey after 134217728 blocks |
|
||||||
debug1: SSH2_MSG_NEWKEYS sent |
|
||||||
debug1: expecting SSH2_MSG_NEWKEYS |
|
||||||
debug3: receive packet: type 21 |
|
||||||
debug1: SSH2_MSG_NEWKEYS received |
|
||||||
debug2: set_newkeys: mode 0 |
|
||||||
debug1: rekey after 134217728 blocks |
|
||||||
debug2: key: /Users/melo/.ssh/id_rsa (0x7f897241b200) |
|
||||||
debug2: key: /Users/melo/.ssh/id_dsa (0x0) |
|
||||||
debug2: key: /Users/melo/.ssh/id_ecdsa (0x0) |
|
||||||
debug2: key: /Users/melo/.ssh/id_ed25519 (0x0) |
|
||||||
debug3: send packet: type 5 |
|
||||||
debug3: receive packet: type 7 |
|
||||||
debug1: SSH2_MSG_EXT_INFO received |
|
||||||
debug1: kex_input_ext_info: server-sig-algs=<rsa-sha2-256,rsa-sha2-512> |
|
||||||
debug3: receive packet: type 6 |
|
||||||
debug2: service_accept: ssh-userauth |
|
||||||
debug1: SSH2_MSG_SERVICE_ACCEPT received |
|
||||||
debug3: send packet: type 50 |
|
||||||
debug3: receive packet: type 51 |
|
||||||
debug1: Authentications that can continue: publickey |
|
||||||
debug3: start over, passed a different list publickey |
|
||||||
debug3: preferred publickey,keyboard-interactive,password |
|
||||||
debug3: authmethod_lookup publickey |
|
||||||
debug3: remaining preferred: keyboard-interactive,password |
|
||||||
debug3: authmethod_is_enabled publickey |
|
||||||
debug1: Next authentication method: publickey |
|
||||||
debug1: Offering public key: RSA SHA256:iIOTgB1gfdbEi11gdn426XlamlH53riKdLqImE22zi8 /Users/melo/.ssh/id_rsa |
|
||||||
debug3: send_pubkey_test |
|
||||||
debug3: send packet: type 50 |
|
||||||
debug2: we sent a publickey packet, wait for reply |
|
||||||
debug3: receive packet: type 51 |
|
||||||
debug1: Authentications that can continue: publickey |
|
||||||
debug1: Trying private key: /Users/melo/.ssh/id_dsa |
|
||||||
debug3: no such identity: /Users/melo/.ssh/id_dsa: No such file or directory |
|
||||||
debug1: Trying private key: /Users/melo/.ssh/id_ecdsa |
|
||||||
debug3: no such identity: /Users/melo/.ssh/id_ecdsa: No such file or directory |
|
||||||
debug1: Trying private key: /Users/melo/.ssh/id_ed25519 |
|
||||||
debug3: no such identity: /Users/melo/.ssh/id_ed25519: No such file or directory |
|
||||||
debug2: we did not send a packet, disable method |
|
||||||
debug1: No more authentication methods to try. |
|
||||||
melo@159.65.75.41: Permission denied (publickey). |
|
||||||
``` |
|
||||||
|
|
||||||
Error message is totally unhelpful. Googling turns up some problems with file permissions and with public key access being disabled in SSH config file. |
|
||||||
|
|
||||||
Logged in via DO, opened a console on the machine (Droplets > More > Access console), and found that the ssh folder was owned by root. Nobody can log in via ssh. Charles updated the permissions: |
|
||||||
|
|
||||||
``` |
|
||||||
sudo chown -R melo:melo ~/.ssh |
|
||||||
sudo chmod 700 ~/.ssh |
|
||||||
sudo chmod 600 ~/.ssh/* |
|
||||||
``` |
|
||||||
|
|
||||||
This still didn't work. |
|
||||||
|
|
||||||
Finally, uninstalling/reinstalling openssh did the trick: |
|
||||||
|
|
||||||
``` |
|
||||||
sudo apt-get purge openssh-client openssh-server |
|
||||||
sudo apt-get install openssh-client openssh-server |
|
||||||
``` |
|
||||||
|
|
||||||
then remove the `.ssh` folder in the root user's home directory. Regenerate the keys as the root user: |
|
||||||
|
|
||||||
``` |
|
||||||
ssh-keygen |
|
||||||
``` |
|
||||||
|
|
||||||
Now the machine should be ready to run the reinstalled SSH server. |
|
||||||
|
|
||||||
To enable passwordless access, assuming you are connecting from a local machine (Mac) to a remote machine (wisko): |
|
||||||
|
|
||||||
On the Mac: generate your ssh key: |
|
||||||
|
|
||||||
``` |
|
||||||
ssh-keygen |
|
||||||
``` |
|
||||||
|
|
||||||
print your public key to the screen: |
|
||||||
|
|
||||||
``` |
|
||||||
cat ~/.ssh/id_rsa.pub |
|
||||||
``` |
|
||||||
|
|
||||||
Copy this key to the clipboard. |
|
||||||
|
|
||||||
On the Mac, log in to wisko: |
|
||||||
|
|
||||||
``` |
|
||||||
ssh melo@<wisko-ip> |
|
||||||
``` |
|
||||||
|
|
||||||
Once you are logged in, edit the following file with your favorite text editor (e.g., nano): |
|
||||||
|
|
||||||
``` |
|
||||||
nano ~/.ssh/authorized_keys |
|
||||||
``` |
|
||||||
|
|
||||||
Add the public key from your Mac as the last line of the file. Save it and close it. |
|
||||||
|
|
||||||
Now test out your passwordless access: SSH from the Mac to wisko. The changes should take effect immediately. |
|
||||||
|
|
||||||
[Link to Uncle Chucky's Passwordless SSH Login Guide](http://charlesreid1.com/wiki/SSH#Passwordless_Login) |
|
||||||
|
|
@ -1,150 +0,0 @@ |
|||||||
# smallmelo.com migration part 1 |
|
||||||
|
|
||||||
## copy public ssh key to wisko |
|
||||||
get public ssh key from local machine |
|
||||||
``` |
|
||||||
cat ~/.ssh/id_rsa.pub |
|
||||||
``` |
|
||||||
copy that log into wisko in seperate termibal window |
|
||||||
``` |
|
||||||
nano .ssh/authorized_keys |
|
||||||
``` |
|
||||||
paste in then exit |
|
||||||
|
|
||||||
## changing the folder structure of my wordpress site |
|
||||||
|
|
||||||
used [this site](https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-14-04-lts) to setup the folders the way i wanted them. |
|
||||||
|
|
||||||
lots of nano-ing and reviewing later, ready to start making changes. |
|
||||||
|
|
||||||
``` |
|
||||||
cd /var/www |
|
||||||
``` |
|
||||||
make directory |
|
||||||
``` |
|
||||||
sudo mkdir -p /var/www/allthehatsformaps.com/public_html |
|
||||||
``` |
|
||||||
|
|
||||||
grant myself permission to access |
|
||||||
``` |
|
||||||
sudo chown -R $USER:$USER /var/www/allthehatsformaps.com/public_html |
|
||||||
|
|
||||||
``` |
|
||||||
|
|
||||||
create example page |
|
||||||
|
|
||||||
``` |
|
||||||
nano /var/www/allthehatsformaps.com/public_html/index.html |
|
||||||
|
|
||||||
``` |
|
||||||
|
|
||||||
ugh, do some renaming |
|
||||||
``` |
|
||||||
sudo mv allthehatsformaps.com allthehatsformaps |
|
||||||
sudo chown -R $USER:$USER /var/www/allthehatsformaps/public_html |
|
||||||
|
|
||||||
``` |
|
||||||
add my html content accordingly, then make a copy of the conf file |
|
||||||
``` |
|
||||||
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/allthehatsformaps.conf |
|
||||||
|
|
||||||
nano allthehatsformaps.conf |
|
||||||
|
|
||||||
``` |
|
||||||
grant permissions |
|
||||||
``` |
|
||||||
sudo chown -R $USER:$USER /etc/apache2/sites-available/allthehatsformaps.conf |
|
||||||
|
|
||||||
``` |
|
||||||
|
|
||||||
edited my new config file |
|
||||||
``` |
|
||||||
ServerName allthehatsformaps.com |
|
||||||
ServerAlias www.allthehatsformaps.com |
|
||||||
ServerAdmin melo@allthehatsformaps.com |
|
||||||
DocumentRoot /var/www/allthehatsformaps/public_html |
|
||||||
|
|
||||||
``` |
|
||||||
|
|
||||||
disable charles' site & enable my new one |
|
||||||
|
|
||||||
``` |
|
||||||
sudo a2dissite 000-default.conf |
|
||||||
sudo a2ensite allthehatsformaps.conf |
|
||||||
service apache2 reload |
|
||||||
|
|
||||||
``` |
|
||||||
|
|
||||||
copy wordpress folder from htdocs to my new folder |
|
||||||
``` |
|
||||||
sudo mv /var/www/htdocs/wordpress /var/www/allthehatsformaps/public_html |
|
||||||
|
|
||||||
``` |
|
||||||
|
|
||||||
oops... that moved the entire folder, i just wanted to move its contents. |
|
||||||
|
|
||||||
``` |
|
||||||
cd /var/www/allthehatsformaps/public_html |
|
||||||
sudo mv wordpress/* . |
|
||||||
rmdir wordpress |
|
||||||
rm index.html |
|
||||||
``` |
|
||||||
|
|
||||||
going to allthehatsformaps.com works |
|
||||||
|
|
||||||
going to allthehatsformaps.com/wp-admin tries to redirect to http://159.65.75.41/wordpress/wp-login.php?redirect_to=http%3A%2F%2Fallthehatsformaps.com%2Fwp-admin%2F&reauth=1 and throws a 404 error |
|
||||||
|
|
||||||
went instead to: |
|
||||||
http://159.65.75.41/wp-login.php |
|
||||||
|
|
||||||
copy back the wordpress folder into htdocs |
|
||||||
|
|
||||||
``` |
|
||||||
sudo cp /var/www/allthehatsformaps/public_html/* /var/www/htdocs/wordpress |
|
||||||
``` |
|
||||||
|
|
||||||
disable my site config and enable old one |
|
||||||
|
|
||||||
``` |
|
||||||
sudo a2dissite allthehatsformaps.conf |
|
||||||
sudo a2ensite 000-default.conf |
|
||||||
service apache2 reload |
|
||||||
``` |
|
||||||
|
|
||||||
went to the wordpress login and signed in |
|
||||||
under settings removed "wordpress" subfolder from the site url |
|
||||||
|
|
||||||
disable charles' site & enable my new one |
|
||||||
|
|
||||||
``` |
|
||||||
sudo a2dissite 000-default.conf |
|
||||||
sudo a2ensite allthehatsformaps.conf |
|
||||||
service apache2 reload |
|
||||||
|
|
||||||
``` |
|
||||||
|
|
||||||
logged back into wordpress and changed the url to: http://allthehatsformaps.com |
|
||||||
|
|
||||||
removed the old wordpress folder in htdocs: |
|
||||||
``` |
|
||||||
sudo rm -r wordpress |
|
||||||
|
|
||||||
``` |
|
||||||
|
|
||||||
cd back into the new wordpress and added a .htaccess file with the following: |
|
||||||
|
|
||||||
``` |
|
||||||
<IfModule mod_rewrite.c> |
|
||||||
RewriteEngine On |
|
||||||
RewriteBase / |
|
||||||
RewriteRule ^index\.php$ - [L] |
|
||||||
RewriteCond %{REQUEST_FILENAME} !-f |
|
||||||
RewriteCond %{REQUEST_FILENAME} !-d |
|
||||||
RewriteRule . /index.php [L] |
|
||||||
</IfModule> |
|
||||||
|
|
||||||
``` |
|
||||||
|
|
||||||
then gave wordpress permission to edit it, according [to this site](https://stackoverflow.com/questions/23388144/wordpress-apache-permalinks-not-working-404-error) |
|
||||||
|
|
||||||
|
|
@ -1,42 +0,0 @@ |
|||||||
# smallmelo.com migration part 2 (all the things) |
|
||||||
|
|
||||||
## grant melo permission to create files and upload via sftp using filezilla |
|
||||||
|
|
||||||
used [these](https://www.digitalocean.com/community/questions/i-can-t-seem-to-grant-myself-write-permissions-to-the-www-directory) instructions |
|
||||||
|
|
||||||
## copied html/php files into var/www/smallmelo |
|
||||||
|
|
||||||
using filazilla |
|
||||||
|
|
||||||
## add the dns records to dreamhost to point to the server |
|
||||||
|
|
||||||
159.65.75.41 (a) |
|
||||||
www smallmelo.com (cname) |
|
||||||
|
|
||||||
|
|
||||||
## create new conf file for smallmelo |
|
||||||
|
|
||||||
``` |
|
||||||
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/smallmelo.conf |
|
||||||
``` |
|
||||||
|
|
||||||
## edit the conf file to point to smallmelo.com |
|
||||||
|
|
||||||
## enable the site |
|
||||||
|
|
||||||
``` |
|
||||||
sudo a2ensite smallmelo.conf |
|
||||||
service apache2 reload |
|
||||||
``` |
|
||||||
## make a backup copy all files from smallmelo.com |
|
||||||
|
|
||||||
## made a basic index.html file |
|
||||||
|
|
||||||
## turn off hosting by dreamhost |
|
||||||
|
|
||||||
## restart apache2 |
|
||||||
``` |
|
||||||
sudo service apache2 restart |
|
||||||
``` |
|
||||||
|
|
||||||
|
|
@ -1,86 +0,0 @@ |
|||||||
# smallmelo.com migration part 3 (allthehatsformaps to smallmelo) |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## remove placeholder file |
|
||||||
|
|
||||||
``` |
|
||||||
sudo rm index.html |
|
||||||
``` |
|
||||||
|
|
||||||
## copy the files to smallmelo |
|
||||||
``` |
|
||||||
sudo cp -a /var/www/allthehatsformaps/public_html/* /var/www/smallmelo/public_html |
|
||||||
``` |
|
||||||
|
|
||||||
## update the site in wordpress |
|
||||||
|
|
||||||
logged back into wordpress and changed the url to: [http://smallmelo.com](http://smallmelo.com/) |
|
||||||
|
|
||||||
|
|
||||||
## copy the relevent stuff over to the smallmelo.conf |
|
||||||
|
|
||||||
``` |
|
||||||
<Directory /var/www/smallmelo/public_html/> |
|
||||||
|
|
||||||
DirectoryIndex index.php |
|
||||||
|
|
||||||
AllowOverride All |
|
||||||
|
|
||||||
Order allow,deny |
|
||||||
|
|
||||||
Allow from all |
|
||||||
|
|
||||||
</Directory> |
|
||||||
|
|
||||||
``` |
|
||||||
|
|
||||||
## disable and enable sites |
|
||||||
``` |
|
||||||
sudo a2dissite allthehatsformaps.conf |
|
||||||
sudo a2ensite smallmelo.conf |
|
||||||
sudo /etc/init.d/apache2 restart |
|
||||||
|
|
||||||
``` |
|
||||||
|
|
||||||
## give permissions |
|
||||||
|
|
||||||
``` |
|
||||||
sudo chown -v :www-data /var/www/smallmelo/public_html/.htaccess |
|
||||||
|
|
||||||
sudo chmod -v 664 "/var/www/smallmelo/public_html/.htaccess" |
|
||||||
|
|
||||||
|
|
||||||
``` |
|
||||||
## reboot |
|
||||||
|
|
||||||
``` |
|
||||||
sudo /etc/init.d/apache2 restart |
|
||||||
|
|
||||||
``` |
|
||||||
|
|
||||||
## disabled, reenabled, reload |
|
||||||
|
|
||||||
``` |
|
||||||
sudo a2dissite smallmelo.conf |
|
||||||
sudo a2ensite smallmelo.conf |
|
||||||
sudo /etc/init.d/apache2 restart |
|
||||||
service apache2 reload |
|
||||||
|
|
||||||
``` |
|
||||||
|
|
||||||
## disabling allthehats |
|
||||||
``` |
|
||||||
sudo rm allthehatsformaps.conf |
|
||||||
service apache2 reload |
|
||||||
``` |
|
||||||
|
|
||||||
## in the /var/wwww |
|
||||||
``` |
|
||||||
sudo rm -r allthehatsformaps |
|
||||||
|
|
||||||
``` |
|
||||||
|
|
||||||
## in dreamhost |
|
||||||
remove wisko DNS records |
|
||||||
setup redirect |
|
@ -1,272 +0,0 @@ |
|||||||
# wisko gitea |
|
||||||
|
|
||||||
## before you begin: gitea setup info |
|
||||||
|
|
||||||
(see [wisko setup](https://hackmd.io/s/BkfqUw0wz) for details on how gitea was set up). |
|
||||||
|
|
||||||
### where is gitea |
|
||||||
|
|
||||||
The wisko gitea instance is installed to `$GOPATH/src/code.gitea.io/gitea` and there is a symlink to this directory at `~/gitea`. |
|
||||||
|
|
||||||
This directory is actually a cloned git repo, so you can see what files you've modified from the default by running a `git status`. |
|
||||||
|
|
||||||
The binary is in that folder, at `bin/gitea`. |
|
||||||
|
|
||||||
### where is go |
|
||||||
|
|
||||||
Go is installed using `goenv`, so the global version of go that goenv will set can be printed using: |
|
||||||
|
|
||||||
``` |
|
||||||
goenv global |
|
||||||
``` |
|
||||||
|
|
||||||
You can verify you have the goenv go installed by running: |
|
||||||
|
|
||||||
``` |
|
||||||
which go |
|
||||||
``` |
|
||||||
|
|
||||||
which should return `~/.goenv/shims/go`, and |
|
||||||
|
|
||||||
``` |
|
||||||
go version |
|
||||||
``` |
|
||||||
|
|
||||||
which should return 1.7.5. |
|
||||||
|
|
||||||
## task summary |
|
||||||
|
|
||||||
Making gitea available via the subdomain `git.smallmelo.com` requires setting up a couple of components: |
|
||||||
* subdomain |
|
||||||
* web server to handle redirects |
|
||||||
* gitea configuration to tell gitea where it is hosted |
|
||||||
* https certificates valid for the subdomain |
|
||||||
|
|
||||||
## set up git subdomain |
|
||||||
|
|
||||||
First thing is, we need to set up the subdomain `git.smallmelo.com` to redirect to the server. This depends on the hosting provider, but should be an A Name Record: |
|
||||||
|
|
||||||
**A Record**: |
|
||||||
|
|
||||||
- Record: git |
|
||||||
- Value: <your ip address> |
|
||||||
|
|
||||||
## apache web server settings |
|
||||||
|
|
||||||
Setting up a name record for the subdomain will result in requests for "git.smallmelo.com" and "smallmelo.com" to both go to your server. The server will be able to see what domain/subdomain was requested in each request, so we need to set up rules to handle the subdomain correctly. |
|
||||||
|
|
||||||
If the git subdomain is not set up with the DNS provider yet, you can still test it locally. From whatever machine you're connecting to wisk as, add an entry to `/etc/hosts` that will map the subdomain to wisko's IP: |
|
||||||
|
|
||||||
``` |
|
||||||
vim /etc/hosts |
|
||||||
``` |
|
||||||
|
|
||||||
and add |
|
||||||
|
|
||||||
``` |
|
||||||
159.65.75.41 git.smallmelo.com |
|
||||||
``` |
|
||||||
|
|
||||||
(Do this on your machine, not on wisko.) |
|
||||||
|
|
||||||
### apache configuration: http |
|
||||||
|
|
||||||
Now we'll set up the Apache web server to redirect any http requests to `git.smallmelo.com` on port 80 on to gitea at port 3000. |
|
||||||
|
|
||||||
Create a new apache config for this site at `/etc/apache2/sites-available/git-smallmelo.conf` that will contain all our settings. Set up a listener on port 80, all interfaces, that looks for requests to `git.smallmelo.com`: |
|
||||||
|
|
||||||
**`/etc/apache2/sites-available/git-smallmelo.conf`**: |
|
||||||
|
|
||||||
``` |
|
||||||
<VirtualHost *:80> |
|
||||||
ServerName git.smallmelo.com |
|
||||||
ServerAdmin melo@smallmelo.com |
|
||||||
|
|
||||||
# ------------------------- |
|
||||||
# Need to enable the following mods: |
|
||||||
# a2enmod proxy |
|
||||||
# a2enmod proxy_http |
|
||||||
|
|
||||||
# Preserve original request (git.smallmelo.com) |
|
||||||
ProxyPreserveHost On |
|
||||||
|
|
||||||
# Set up proxy |
|
||||||
<Proxy *> |
|
||||||
Order allow,deny |
|
||||||
Allow from all |
|
||||||
</Proxy> |
|
||||||
ProxyPass / http://localhost:3000/ |
|
||||||
ProxyPassReverse / http://localhost:3000/ |
|
||||||
|
|
||||||
# ------------------------- |
|
||||||
|
|
||||||
ErrorLog ${APACHE_LOG_DIR}/git-smallmelo-error.log |
|
||||||
CustomLog ${APACHE_LOG_DIR}/git-smallmelo-access.log combined |
|
||||||
|
|
||||||
# Note that we don't set a document root |
|
||||||
# or permissions for a web directory |
|
||||||
# because we're just forwarding traffic |
|
||||||
# to gitea, which runs an entirely separate |
|
||||||
# web server. |
|
||||||
|
|
||||||
</VirtualHost> |
|
||||||
``` |
|
||||||
|
|
||||||
### apache configuration: https |
|
||||||
|
|
||||||
We also need to set up Apache to redirect https requests to `git.smallmelo.com` on port 443 to gitea at port 3000. |
|
||||||
|
|
||||||
This will require an HTTPS certificate for `git.smallmelo.com`, so fire up lets encrypt. |
|
||||||
|
|
||||||
### making apache certificate |
|
||||||
|
|
||||||
Create an https apache config for this site at `/etc/apache2/sites-available/git-smallmelo-le-ssl.conf` that will contain all our settings. Set up a listener on port 443, all interfaces, that looks for requests to `git.smallmelo.com`. |
|
||||||
|
|
||||||
Run the certbot: |
|
||||||
|
|
||||||
``` |
|
||||||
$ sudo certbot certonly --non-interactive --agree-tos --email "melo@smallmelo.com" --apache -d "git.smallmelo.com" |
|
||||||
``` |
|
||||||
|
|
||||||
This will take a minute, but should conclude with: |
|
||||||
|
|
||||||
``` |
|
||||||
IMPORTANT NOTES: |
|
||||||
- Congratulations! Your certificate and chain have been saved at: |
|
||||||
/etc/letsencrypt/live/git.smallmelo.com/fullchain.pem |
|
||||||
Your key file has been saved at: |
|
||||||
/etc/letsencrypt/live/git.smallmelo.com/privkey.pem |
|
||||||
Your cert will expire on 2018-06-24. To obtain a new or tweaked |
|
||||||
version of this certificate in the future, simply run certbot |
|
||||||
again. To non-interactively renew *all* of your certificates, run |
|
||||||
"certbot renew" |
|
||||||
- If you like Certbot, please consider supporting our work by: |
|
||||||
|
|
||||||
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate |
|
||||||
Donating to EFF: https://eff.org/donate-le |
|
||||||
``` |
|
||||||
|
|
||||||
### apache configuration: https (revisited) |
|
||||||
|
|
||||||
Note that once the HTTPS request hits the server, the proxy does not need to happen over HTTPS since it happens within a single machine. |
|
||||||
|
|
||||||
**`/etc/apache2/sites-available/git-smallmelo-le-ssl.conf`**: |
|
||||||
|
|
||||||
``` |
|
||||||
<IfModule mod_ssl.c> |
|
||||||
<VirtualHost *:443> |
|
||||||
ServerName git.smallmelo.com |
|
||||||
ServerAdmin melo@smallmelo.com |
|
||||||
|
|
||||||
ErrorLog ${APACHE_LOG_DIR}/git-smallmelo-ssl-error.log |
|
||||||
CustomLog ${APACHE_LOG_DIR}/git-smallmelo-ssl-access.log combined |
|
||||||
|
|
||||||
# ------------------------- |
|
||||||
# Need to enable the following mods: |
|
||||||
|
|
||||||
# a2enmod proxy |
|
||||||
# a2enmod proxy_http |
|
||||||
|
|
||||||
SSLEngine on |
|
||||||
SSLProxyEngine On |
|
||||||
Include /etc/letsencrypt/options-ssl-apache.conf |
|
||||||
SSLCertificateFile /etc/letsencrypt/live/git.smallmelo.com/fullchain.pem |
|
||||||
SSLCertificateKeyFile /etc/letsencrypt/live/git.smallmelo.com/privkey.pem |
|
||||||
|
|
||||||
# Preserve original request (git.smallmelo.com) |
|
||||||
ProxyPreserveHost On |
|
||||||
|
|
||||||
# Set up proxy |
|
||||||
<Proxy *> |
|
||||||
Order allow,deny |
|
||||||
Allow from all |
|
||||||
</Proxy> |
|
||||||
ProxyPass / http://localhost:3000/ |
|
||||||
ProxyPassReverse / http://localhost:3000/ |
|
||||||
|
|
||||||
# ------------------------- |
|
||||||
|
|
||||||
</VirtualHost> |
|
||||||
</IfModule> |
|
||||||
``` |
|
||||||
|
|
||||||
### enable and activate |
|
||||||
|
|
||||||
Now enable the mods: |
|
||||||
``` |
|
||||||
a2enmod proxy |
|
||||||
a2enmod proxy_http |
|
||||||
``` |
|
||||||
|
|
||||||
Now enable the site: |
|
||||||
|
|
||||||
``` |
|
||||||
a2ensite git-smallmelo |
|
||||||
a2ensite git-smallmelo-le-ssl |
|
||||||
``` |
|
||||||
|
|
||||||
Now activate the site: |
|
||||||
|
|
||||||
``` |
|
||||||
service apache2 reload |
|
||||||
``` |
|
||||||
|
|
||||||
Once the A Name DNS record propagates, you can test out the Apache configuration. |
|
||||||
|
|
||||||
Run a dummy HTTP web server on port 3000: |
|
||||||
|
|
||||||
``` |
|
||||||
cat "<h2>hello world</h2>" > index.html |
|
||||||
python3 -m http.server 3000 |
|
||||||
``` |
|
||||||
|
|
||||||
Now if you visit the subdomain: |
|
||||||
|
|
||||||
``` |
|
||||||
http://git.smallmelo.com |
|
||||||
``` |
|
||||||
|
|
||||||
you should see a hit in the window running the HTTP server on port 3000. |
|
||||||
|
|
||||||
|
|
||||||
## gitea configuration |
|
||||||
|
|
||||||
### gitea version |
|
||||||
|
|
||||||
Start out by checking which version of gitea you have. We have checked out release `1.2`, which means that our git repo is in a "headless" state. Any changes that we make are going to go into a dead end. |
|
||||||
|
|
||||||
But that's perfect - we can keep track of all our changes relative to version 1.2, and revert any changes we don't want anymore. |
|
||||||
|
|
||||||
Make the following changes to the default `app.ini` gitea config file: |
|
||||||
|
|
||||||
``` |
|
||||||
RUN_USER = melo |
|
||||||
|
|
||||||
DOMAIN = git.smallmelo.com |
|
||||||
ROOT_URL = %(PROTOCOL)s://%(DOMAIN)s/ |
|
||||||
``` |
|
||||||
|
|
||||||
(Note, you can use git diff to pick up the changes in the file.) |
|
||||||
|
|
||||||
Kill any instances of gitea that are already running on port 3000, and start up the gitea server: |
|
||||||
|
|
||||||
``` |
|
||||||
cd ~/gitea |
|
||||||
./gitea web |
|
||||||
``` |
|
||||||
|
|
||||||
(or, do it in a screen, [as mentioned in the wisko setup doc](https://hackmd.io/s/BkfqUw0wz#Installing-Gitea)). |
|
||||||
|
|
||||||
## https certs |
|
||||||
|
|
||||||
See the above modifications to the document about certificates. A new SSL certificate for the git subdomain (`git.smallmelo.com`) was needed, so we used certbot to make it. |
|
||||||
|
|
||||||
To explain the HTTPS certificate setup for git.smallmelo.com a bit more: |
|
||||||
|
|
||||||
* Gitea runs its own web server, hosts its own files, and does not require an Apache server to run. We're just using Apache for convenience. |
|
||||||
* Just as HTTP requests to smallmelo.com always go to port 80, where there is an Apache server listening, HTTPS requests to smallmelo.com always go to port 443, where there is also an Apache server listening |
|
||||||
* HTTPS requests are handled by the Apache web server, so the certificates to create an encrypted session are handled by the Apache web server |
|
||||||
* Apache must have an SSL certifiate for `git.smallmelo.com` to make the connection, or the browser will complain that the server is not configured correctly |
|
||||||
* When we make a request for a gitea resource (say, `https://git.smallmelo.com/melo/my-cool-project`), the subdomain tells Apache where to forward the request (to gitea on port 3000), and the rest of the url (`/melo/my-cool-project`) is passed on to gitea, unmodified |
|
||||||
* The request from Apache to gitea happens on a single machine, so the connection does not need to be encrypted, hence Apache's proxy requests go to `http://localhost:3000` and not `https://localhost:3000` |
|
||||||
|
|
@ -0,0 +1,770 @@ |
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!DOCTYPE html> |
||||||
|
<html lang="en" class="no-js"> |
||||||
|
<head> |
||||||
|
|
||||||
|
<meta charset="utf-8"> |
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1"> |
||||||
|
<meta http-equiv="x-ua-compatible" content="ie=edge"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="lang:clipboard.copy" content="Copy to clipboard"> |
||||||
|
|
||||||
|
<meta name="lang:clipboard.copied" content="Copied to clipboard"> |
||||||
|
|
||||||
|
<meta name="lang:search.language" content="en"> |
||||||
|
|
||||||
|
<meta name="lang:search.pipeline.stopwords" content="True"> |
||||||
|
|
||||||
|
<meta name="lang:search.pipeline.trimmer" content="True"> |
||||||
|
|
||||||
|
<meta name="lang:search.result.none" content="No matching documents"> |
||||||
|
|
||||||
|
<meta name="lang:search.result.one" content="1 matching document"> |
||||||
|
|
||||||
|
<meta name="lang:search.result.other" content="# matching documents"> |
||||||
|
|
||||||
|
<meta name="lang:search.tokenizer" content="[\s\-]+"> |
||||||
|
|
||||||
|
<link rel="shortcut icon" href="../"> |
||||||
|
<meta name="generator" content="mkdocs-0.17.3, mkdocs-material-2.7.2"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<title>Wisko FAQ - the wisko manual</title> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="../assets/stylesheets/application.8d40d89b.css"> |
||||||
|
|
||||||
|
<link rel="stylesheet" href="../assets/stylesheets/application-palette.6079476c.css"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script src="../assets/javascripts/modernizr.1aa3b519.js"></script> |
||||||
|
|
||||||
|
|
||||||
|
<link href="https://fonts.gstatic.com" rel="preconnect" crossorigin> |
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono"> |
||||||
|
<style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style> |
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"> |
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="../css/custom.css"> |
||||||
|
|
||||||
|
|
||||||
|
</head> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<body dir="ltr" data-md-color-primary="green" data-md-color-accent="green"> |
||||||
|
|
||||||
|
<svg class="md-svg"> |
||||||
|
<defs> |
||||||
|
|
||||||
|
|
||||||
|
</defs> |
||||||
|
</svg> |
||||||
|
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="drawer" autocomplete="off"> |
||||||
|
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="search" autocomplete="off"> |
||||||
|
<label class="md-overlay" data-md-component="overlay" for="drawer"></label> |
||||||
|
|
||||||
|
<a href="#wisko-faq" tabindex="1" class="md-skip"> |
||||||
|
Skip to content |
||||||
|
</a> |
||||||
|
|
||||||
|
|
||||||
|
<header class="md-header" data-md-component="header"> |
||||||
|
<nav class="md-header-nav md-grid"> |
||||||
|
<div class="md-flex"> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
<a href=".." title="the wisko manual" class="md-header-nav__button md-logo"> |
||||||
|
|
||||||
|
<i class="md-icon">cloud</i> |
||||||
|
|
||||||
|
</a> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
<label class="md-icon md-icon--menu md-header-nav__button" for="drawer"></label> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--stretch"> |
||||||
|
<div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"> |
||||||
|
|
||||||
|
|
||||||
|
<span class="md-header-nav__topic"> |
||||||
|
the wisko manual |
||||||
|
</span> |
||||||
|
<span class="md-header-nav__topic"> |
||||||
|
Wisko FAQ |
||||||
|
</span> |
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
|
||||||
|
|
||||||
|
<label class="md-icon md-icon--search md-header-nav__button" for="search"></label> |
||||||
|
|
||||||
|
<div class="md-search" data-md-component="search" role="dialog"> |
||||||
|
<label class="md-search__overlay" for="search"></label> |
||||||
|
<div class="md-search__inner" role="search"> |
||||||
|
<form class="md-search__form" name="search"> |
||||||
|
<input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> |
||||||
|
<label class="md-icon md-search__icon" for="search"></label> |
||||||
|
<button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1"> |
||||||
|
 |
||||||
|
</button> |
||||||
|
</form> |
||||||
|
<div class="md-search__output"> |
||||||
|
<div class="md-search__scrollwrap" data-md-scrollfix> |
||||||
|
<div class="md-search-result" data-md-component="result"> |
||||||
|
<div class="md-search-result__meta"> |
||||||
|
Type to start searching |
||||||
|
</div> |
||||||
|
<ol class="md-search-result__list"></ol> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
</nav> |
||||||
|
</header> |
||||||
|
|
||||||
|
<div class="md-container"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<main class="md-main"> |
||||||
|
<div class="md-main__inner md-grid" data-md-component="container"> |
||||||
|
|
||||||
|
|
||||||
|
<div class="md-sidebar md-sidebar--primary" data-md-component="navigation"> |
||||||
|
<div class="md-sidebar__scrollwrap"> |
||||||
|
<div class="md-sidebar__inner"> |
||||||
|
<nav class="md-nav md-nav--primary" data-md-level="0"> |
||||||
|
<label class="md-nav__title md-nav__title--site" for="drawer"> |
||||||
|
<span class="md-nav__button md-logo"> |
||||||
|
|
||||||
|
<i class="md-icon">cloud</i> |
||||||
|
|
||||||
|
</span> |
||||||
|
the wisko manual |
||||||
|
</label> |
||||||
|
|
||||||
|
<ul class="md-nav__list" data-md-scrollfix> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href=".." title="Index" class="md-nav__link"> |
||||||
|
Index |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../boot2root/" title="Wisko Boot to Root" class="md-nav__link"> |
||||||
|
Wisko Boot to Root |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item md-nav__item--active"> |
||||||
|
|
||||||
|
<input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="toc"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<label class="md-nav__link md-nav__link--active" for="toc"> |
||||||
|
Wisko FAQ |
||||||
|
</label> |
||||||
|
|
||||||
|
<a href="./" title="Wisko FAQ" class="md-nav__link md-nav__link--active"> |
||||||
|
Wisko FAQ |
||||||
|
</a> |
||||||
|
|
||||||
|
|
||||||
|
<nav class="md-nav md-nav--secondary"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<label class="md-nav__title" for="toc">Table of contents</label> |
||||||
|
<ul class="md-nav__list" data-md-scrollfix> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#apache" title="Apache" class="md-nav__link"> |
||||||
|
Apache |
||||||
|
</a> |
||||||
|
|
||||||
|
<nav class="md-nav"> |
||||||
|
<ul class="md-nav__list"> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#running-apache2" title="running apache2" class="md-nav__link"> |
||||||
|
running apache2 |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#apache2-configuration-files" title="apache2 configuration files" class="md-nav__link"> |
||||||
|
apache2 configuration files |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
</ul> |
||||||
|
</nav> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#php" title="PHP" class="md-nav__link"> |
||||||
|
PHP |
||||||
|
</a> |
||||||
|
|
||||||
|
<nav class="md-nav"> |
||||||
|
<ul class="md-nav__list"> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#running-php" title="running php" class="md-nav__link"> |
||||||
|
running php |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#php-configuration-files" title="php configuration files" class="md-nav__link"> |
||||||
|
php configuration files |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
</ul> |
||||||
|
</nav> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#mysql" title="MySQL" class="md-nav__link"> |
||||||
|
MySQL |
||||||
|
</a> |
||||||
|
|
||||||
|
<nav class="md-nav"> |
||||||
|
<ul class="md-nav__list"> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#networking" title="networking" class="md-nav__link"> |
||||||
|
networking |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#running-mysql" title="running mysql" class="md-nav__link"> |
||||||
|
running mysql |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#mysql-configuration-files" title="mysql configuration files" class="md-nav__link"> |
||||||
|
mysql configuration files |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
</ul> |
||||||
|
</nav> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#gitea" title="Gitea" class="md-nav__link"> |
||||||
|
Gitea |
||||||
|
</a> |
||||||
|
|
||||||
|
<nav class="md-nav"> |
||||||
|
<ul class="md-nav__list"> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#gitea-locations" title="gitea locations" class="md-nav__link"> |
||||||
|
gitea locations |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#running-gitea" title="running gitea" class="md-nav__link"> |
||||||
|
running gitea |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#rebuilding-gitea" title="rebuilding gitea" class="md-nav__link"> |
||||||
|
rebuilding gitea |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
</ul> |
||||||
|
</nav> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</ul> |
||||||
|
|
||||||
|
</nav> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../locked-out/" title="Locked Out of Wisko" class="md-nav__link"> |
||||||
|
Locked Out of Wisko |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../smallmelo-migration-1/" title="smallmelo.com Migration: Part 1" class="md-nav__link"> |
||||||
|
smallmelo.com Migration: Part 1 |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../smallmelo-migration-2/" title="smallmelo.com Migration: Part 2" class="md-nav__link"> |
||||||
|
smallmelo.com Migration: Part 2 |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../smallmelo-migration-3/" title="smallmelo.com Migration: Part 3" class="md-nav__link"> |
||||||
|
smallmelo.com Migration: Part 3 |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../wisko-gitea/" title="Wisko Gitea" class="md-nav__link"> |
||||||
|
Wisko Gitea |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../geoserver-https/" title="Connecting to Geoserver Over HTTPS" class="md-nav__link"> |
||||||
|
Connecting to Geoserver Over HTTPS |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
</ul> |
||||||
|
</nav> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
<div class="md-sidebar md-sidebar--secondary" data-md-component="toc"> |
||||||
|
<div class="md-sidebar__scrollwrap"> |
||||||
|
<div class="md-sidebar__inner"> |
||||||
|
|
||||||
|
<nav class="md-nav md-nav--secondary"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<label class="md-nav__title" for="toc">Table of contents</label> |
||||||
|
<ul class="md-nav__list" data-md-scrollfix> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#apache" title="Apache" class="md-nav__link"> |
||||||
|
Apache |
||||||
|
</a> |
||||||
|
|
||||||
|
<nav class="md-nav"> |
||||||
|
<ul class="md-nav__list"> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#running-apache2" title="running apache2" class="md-nav__link"> |
||||||
|
running apache2 |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#apache2-configuration-files" title="apache2 configuration files" class="md-nav__link"> |
||||||
|
apache2 configuration files |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
</ul> |
||||||
|
</nav> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#php" title="PHP" class="md-nav__link"> |
||||||
|
PHP |
||||||
|
</a> |
||||||
|
|
||||||
|
<nav class="md-nav"> |
||||||
|
<ul class="md-nav__list"> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#running-php" title="running php" class="md-nav__link"> |
||||||
|
running php |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#php-configuration-files" title="php configuration files" class="md-nav__link"> |
||||||
|
php configuration files |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
</ul> |
||||||
|
</nav> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#mysql" title="MySQL" class="md-nav__link"> |
||||||
|
MySQL |
||||||
|
</a> |
||||||
|
|
||||||
|
<nav class="md-nav"> |
||||||
|
<ul class="md-nav__list"> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#networking" title="networking" class="md-nav__link"> |
||||||
|
networking |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#running-mysql" title="running mysql" class="md-nav__link"> |
||||||
|
running mysql |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#mysql-configuration-files" title="mysql configuration files" class="md-nav__link"> |
||||||
|
mysql configuration files |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
</ul> |
||||||
|
</nav> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#gitea" title="Gitea" class="md-nav__link"> |
||||||
|
Gitea |
||||||
|
</a> |
||||||
|
|
||||||
|
<nav class="md-nav"> |
||||||
|
<ul class="md-nav__list"> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#gitea-locations" title="gitea locations" class="md-nav__link"> |
||||||
|
gitea locations |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#running-gitea" title="running gitea" class="md-nav__link"> |
||||||
|
running gitea |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#rebuilding-gitea" title="rebuilding gitea" class="md-nav__link"> |
||||||
|
rebuilding gitea |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
</ul> |
||||||
|
</nav> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</ul> |
||||||
|
|
||||||
|
</nav> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
<div class="md-content"> |
||||||
|
<article class="md-content__inner md-typeset"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h1 id="wisko-faq">wisko FAQ</h1> |
||||||
|
<h2 id="apache">Apache</h2> |
||||||
|
<p>Link: <a href="https://help.ubuntu.com/lts/serverguide/httpd.html">Apache on the Ubuntu Wiki</a></p> |
||||||
|
<p>Apache 2 was installed using the command <code>apt-get install apache2</code>.</p> |
||||||
|
<h3 id="running-apache2">running apache2</h3> |
||||||
|
<p>To start, restart, or stop apache2 (it should start automatically on boot):</p> |
||||||
|
<pre><code>$ sudo service apache2 start |
||||||
|
$ sudo service apache2 restart |
||||||
|
$ sudo service apache2 stop |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<h3 id="apache2-configuration-files">apache2 configuration files</h3> |
||||||
|
<p>Apache keeps its configuration files in <code>/etc/apache2/</code>.</p> |
||||||
|
<p>Apache is configured to host multiple websites, so there are multiple configuration files. </p> |
||||||
|
<p>The global Apache config file is <code>/etc/apache2/apache2.conf</code>.</p> |
||||||
|
<p>Site-specific Apache config files are in <code>/etc/apache2/sites-available</code>. To make a new site, just add a new file to that folder (name it whatever you'd like). There is an existing default configuration in that folder.</p> |
||||||
|
<p>The site configuration file is where you edit the folder it serves up, the port it listens on, what requests it is listening for (subdomain or full domain), etc.</p> |
||||||
|
<p>When you have edited a site's configuration file, enable it using the <code>a2ensite</code> command:</p> |
||||||
|
<pre><code>$ a2ensite name_of_site |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>Likewise, disable the site with <code>a2dissite</code>:</p> |
||||||
|
<pre><code>$ a2dissite name_of_site |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<h2 id="php">PHP</h2> |
||||||
|
<p>Link: <a href="https://help.ubuntu.com/community/ApacheMySQLPHP">LAMP Server on Ubuntu Wiki</a></p> |
||||||
|
<p>PHP was installed using aptitude.</p> |
||||||
|
<h3 id="running-php">running php</h3> |
||||||
|
<p>PHP is a programming language designed for web browsers, so you don't need to start it - Apache will handle that. (Apache has a PHP module that has been enabled.)</p> |
||||||
|
<h3 id="php-configuration-files">php configuration files</h3> |
||||||
|
<p>PHP also has multiple configuration files, but we're only interested in the Apache-PHP configuration file at <code>/etc/php5/apache2/php.ini</code>. The main thing that you would change here is the max file upload size (10 MB by default) and whether PHP prints out errors ("debug" mode).</p> |
||||||
|
<h2 id="mysql">MySQL</h2> |
||||||
|
<p>Link: <a href="https://help.ubuntu.com/lts/serverguide/mysql.html">MySQL on Ubuntu Wiki</a></p> |
||||||
|
<p>MySQL server was installed using aptitude.</p> |
||||||
|
<h3 id="networking">networking</h3> |
||||||
|
<p>MySQL will listen on port 3306 for incoming requests on the local machine <em>only</em> (it is bound to the address 127.0.0.1:3306). That means no outside computers can communicate with MySQL. This can be changed in the configuration file.</p> |
||||||
|
<h3 id="running-mysql">running mysql</h3> |
||||||
|
<p>To run the MySQL server in the background (it should start automatically on boot), run:</p> |
||||||
|
<pre><code>$ sudo service mysql start |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>To get a MySQL shell, run MySQL from the command line:</p> |
||||||
|
<pre><code>$ mysql -u root -p |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>This will prompt you for your MySQL password.</p> |
||||||
|
<p>To make a new MySQL user, log in as the root user and run:</p> |
||||||
|
<pre><code>mysql> CREATE USER 'newuser'@'localhost' IDENTIFIED BY "newpassword"; |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>To create a database and give the new user permission to edit that database:</p> |
||||||
|
<pre><code>mysql> CREATE DATABASE newdb; |
||||||
|
mysql> GRANT ALL PRIVILEGES ON newdb.* TO "newuser"@"localhost"; |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>MySQL is picky about quotations.</p> |
||||||
|
<h3 id="mysql-configuration-files">mysql configuration files</h3> |
||||||
|
<p>The main MySQL configuration file is in <code>/etc/mysql/mysql.cnf</code>.</p> |
||||||
|
<p>The MySQL configuration file that you should edit is at <code>/etc/mysql/mysql.conf.d/mysql.cnf</code>.</p> |
||||||
|
<h2 id="gitea">Gitea</h2> |
||||||
|
<h3 id="gitea-locations">gitea locations</h3> |
||||||
|
<p>Gitea was installed using <code>go get</code>, which integrates Go with Github. The command checked out a copy of the code in the directory specified by <code>$GOCODE</code>, which is at <code>~/gocode</code>.</p> |
||||||
|
<p>The gitea source is located in <code>/home/melo/gocode/src/code.gitea.io/gitea/</code>, which is symlinked to <code>~melo/gitea/</code>.</p> |
||||||
|
<h3 id="running-gitea">running gitea</h3> |
||||||
|
<p>Gitea will <em>not</em> run on boot - a startup service needs to be added in <code>/etc/init.d/gitea</code> that will run the gitea command as user <code>melo</code>.</p> |
||||||
|
<p>The Gitea web server is a binary Go program that bundles together everything it needs to run. The binary is built and run in the directory <code>~melo/gocode/src/code.gitea.io/gitea</code> (both as the user <code>melo</code>). </p> |
||||||
|
<p>To run the binary, you would execute it with the "web" argument:</p> |
||||||
|
<pre><code>$ cd ~/gocode/src/code.gitea.io/gitea/ |
||||||
|
$ ./gitea web |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>However, this starts the process in the foreground, so it's more convenient to run it in a screen (which allows you to detach from a shell, end your session, and reattach to that shell in a later session).</p> |
||||||
|
<pre><code>$ screen -d -m -S giteaweb $HOME/gocode/src/code.gitea.io/gitea/gitea web |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>This will start a new screen in detached mode (<code>-d -m</code>), call it <code>giteaweb</code> (<code>-S</code>), and run the command <code>gitea web</code>.</p> |
||||||
|
<p>To reattach, list your screens using the <code>-ls</code> flag and reattach using the <code>-r</code> flag:</p> |
||||||
|
<pre><code>$ screen -ls |
||||||
|
$ screen -r giteaweb |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<h3 id="rebuilding-gitea">rebuilding gitea</h3> |
||||||
|
<p>The gitea source directory at <code>~/gocode/src/code.gitea.io/gitea</code> is a cloned git repository, so you can check out different versions or branches as needed. If you make changes to the configuration file or template files, you will also need to re-make the gitea binary (since all of that is bundled up in the binary).</p> |
||||||
|
<p>To remake the binary:</p> |
||||||
|
<pre><code>$ cd $GOCODE/src/code.gitea.io/gitea/ |
||||||
|
|
||||||
|
# here you can do stuff like |
||||||
|
# git branch -a |
||||||
|
# git checkout v1.3 |
||||||
|
|
||||||
|
$ TAGS="bindata" make generate build |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</article> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</main> |
||||||
|
|
||||||
|
|
||||||
|
<footer class="md-footer"> |
||||||
|
|
||||||
|
<div class="md-footer-nav"> |
||||||
|
<nav class="md-footer-nav__inner md-grid"> |
||||||
|
|
||||||
|
<a href="../boot2root/" title="Wisko Boot to Root" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
<i class="md-icon md-icon--arrow-back md-footer-nav__button"></i> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"> |
||||||
|
<span class="md-flex__ellipsis"> |
||||||
|
<span class="md-footer-nav__direction"> |
||||||
|
Previous |
||||||
|
</span> |
||||||
|
Wisko Boot to Root |
||||||
|
</span> |
||||||
|
</div> |
||||||
|
</a> |
||||||
|
|
||||||
|
|
||||||
|
<a href="../locked-out/" title="Locked Out of Wisko" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"> |
||||||
|
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"> |
||||||
|
<span class="md-flex__ellipsis"> |
||||||
|
<span class="md-footer-nav__direction"> |
||||||
|
Next |
||||||
|
</span> |
||||||
|
Locked Out of Wisko |
||||||
|
</span> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
<i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i> |
||||||
|
</div> |
||||||
|
</a> |
||||||
|
|
||||||
|
</nav> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="md-footer-meta md-typeset"> |
||||||
|
<div class="md-footer-meta__inner md-grid"> |
||||||
|
<div class="md-footer-copyright"> |
||||||
|
|
||||||
|
<div class="md-footer-copyright__highlight"> |
||||||
|
Copyright 2018 Charles Reid |
||||||
|
</div> |
||||||
|
|
||||||
|
powered by |
||||||
|
<a href="http://www.mkdocs.org">MkDocs</a> |
||||||
|
and |
||||||
|
<a href="https://squidfunk.github.io/mkdocs-material/"> |
||||||
|
Material for MkDocs</a> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</footer> |
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
<script src="../assets/javascripts/application.0cf9b500.js"></script> |
||||||
|
|
||||||
|
<script>app.initialize({version:"0.17.3",url:{base:".."}})</script> |
||||||
|
|
||||||
|
<script src="../search/require.js"></script> |
||||||
|
|
||||||
|
<script src="../search/search.js"></script> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body> |
||||||
|
</html> |
@ -0,0 +1,656 @@ |
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!DOCTYPE html> |
||||||
|
<html lang="en" class="no-js"> |
||||||
|
<head> |
||||||
|
|
||||||
|
<meta charset="utf-8"> |
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1"> |
||||||
|
<meta http-equiv="x-ua-compatible" content="ie=edge"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="lang:clipboard.copy" content="Copy to clipboard"> |
||||||
|
|
||||||
|
<meta name="lang:clipboard.copied" content="Copied to clipboard"> |
||||||
|
|
||||||
|
<meta name="lang:search.language" content="en"> |
||||||
|
|
||||||
|
<meta name="lang:search.pipeline.stopwords" content="True"> |
||||||
|
|
||||||
|
<meta name="lang:search.pipeline.trimmer" content="True"> |
||||||
|
|
||||||
|
<meta name="lang:search.result.none" content="No matching documents"> |
||||||
|
|
||||||
|
<meta name="lang:search.result.one" content="1 matching document"> |
||||||
|
|
||||||
|
<meta name="lang:search.result.other" content="# matching documents"> |
||||||
|
|
||||||
|
<meta name="lang:search.tokenizer" content="[\s\-]+"> |
||||||
|
|
||||||
|
<link rel="shortcut icon" href="../"> |
||||||
|
<meta name="generator" content="mkdocs-0.17.3, mkdocs-material-2.7.2"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<title>Connecting to Geoserver Over HTTPS - the wisko manual</title> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="../assets/stylesheets/application.8d40d89b.css"> |
||||||
|
|
||||||
|
<link rel="stylesheet" href="../assets/stylesheets/application-palette.6079476c.css"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script src="../assets/javascripts/modernizr.1aa3b519.js"></script> |
||||||
|
|
||||||
|
|
||||||
|
<link href="https://fonts.gstatic.com" rel="preconnect" crossorigin> |
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono"> |
||||||
|
<style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style> |
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"> |
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="../css/custom.css"> |
||||||
|
|
||||||
|
|
||||||
|
</head> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<body dir="ltr" data-md-color-primary="green" data-md-color-accent="green"> |
||||||
|
|
||||||
|
<svg class="md-svg"> |
||||||
|
<defs> |
||||||
|
|
||||||
|
|
||||||
|
</defs> |
||||||
|
</svg> |
||||||
|
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="drawer" autocomplete="off"> |
||||||
|
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="search" autocomplete="off"> |
||||||
|
<label class="md-overlay" data-md-component="overlay" for="drawer"></label> |
||||||
|
|
||||||
|
<a href="#installing-geoserver-connecting-over-https" tabindex="1" class="md-skip"> |
||||||
|
Skip to content |
||||||
|
</a> |
||||||
|
|
||||||
|
|
||||||
|
<header class="md-header" data-md-component="header"> |
||||||
|
<nav class="md-header-nav md-grid"> |
||||||
|
<div class="md-flex"> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
<a href=".." title="the wisko manual" class="md-header-nav__button md-logo"> |
||||||
|
|
||||||
|
<i class="md-icon">cloud</i> |
||||||
|
|
||||||
|
</a> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
<label class="md-icon md-icon--menu md-header-nav__button" for="drawer"></label> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--stretch"> |
||||||
|
<div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"> |
||||||
|
|
||||||
|
|
||||||
|
<span class="md-header-nav__topic"> |
||||||
|
the wisko manual |
||||||
|
</span> |
||||||
|
<span class="md-header-nav__topic"> |
||||||
|
Connecting to Geoserver Over HTTPS |
||||||
|
</span> |
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
|
||||||
|
|
||||||
|
<label class="md-icon md-icon--search md-header-nav__button" for="search"></label> |
||||||
|
|
||||||
|
<div class="md-search" data-md-component="search" role="dialog"> |
||||||
|
<label class="md-search__overlay" for="search"></label> |
||||||
|
<div class="md-search__inner" role="search"> |
||||||
|
<form class="md-search__form" name="search"> |
||||||
|
<input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> |
||||||
|
<label class="md-icon md-search__icon" for="search"></label> |
||||||
|
<button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1"> |
||||||
|
 |
||||||
|
</button> |
||||||
|
</form> |
||||||
|
<div class="md-search__output"> |
||||||
|
<div class="md-search__scrollwrap" data-md-scrollfix> |
||||||
|
<div class="md-search-result" data-md-component="result"> |
||||||
|
<div class="md-search-result__meta"> |
||||||
|
Type to start searching |
||||||
|
</div> |
||||||
|
<ol class="md-search-result__list"></ol> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
</nav> |
||||||
|
</header> |
||||||
|
|
||||||
|
<div class="md-container"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<main class="md-main"> |
||||||
|
<div class="md-main__inner md-grid" data-md-component="container"> |
||||||
|
|
||||||
|
|
||||||
|
<div class="md-sidebar md-sidebar--primary" data-md-component="navigation"> |
||||||
|
<div class="md-sidebar__scrollwrap"> |
||||||
|
<div class="md-sidebar__inner"> |
||||||
|
<nav class="md-nav md-nav--primary" data-md-level="0"> |
||||||
|
<label class="md-nav__title md-nav__title--site" for="drawer"> |
||||||
|
<span class="md-nav__button md-logo"> |
||||||
|
|
||||||
|
<i class="md-icon">cloud</i> |
||||||
|
|
||||||
|
</span> |
||||||
|
the wisko manual |
||||||
|
</label> |
||||||
|
|
||||||
|
<ul class="md-nav__list" data-md-scrollfix> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href=".." title="Index" class="md-nav__link"> |
||||||
|
Index |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../boot2root/" title="Wisko Boot to Root" class="md-nav__link"> |
||||||
|
Wisko Boot to Root |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../faq/" title="Wisko FAQ" class="md-nav__link"> |
||||||
|
Wisko FAQ |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../locked-out/" title="Locked Out of Wisko" class="md-nav__link"> |
||||||
|
Locked Out of Wisko |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../smallmelo-migration-1/" title="smallmelo.com Migration: Part 1" class="md-nav__link"> |
||||||
|
smallmelo.com Migration: Part 1 |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../smallmelo-migration-2/" title="smallmelo.com Migration: Part 2" class="md-nav__link"> |
||||||
|
smallmelo.com Migration: Part 2 |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../smallmelo-migration-3/" title="smallmelo.com Migration: Part 3" class="md-nav__link"> |
||||||
|
smallmelo.com Migration: Part 3 |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../wisko-gitea/" title="Wisko Gitea" class="md-nav__link"> |
||||||
|
Wisko Gitea |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item md-nav__item--active"> |
||||||
|
|
||||||
|
<input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="toc"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<label class="md-nav__link md-nav__link--active" for="toc"> |
||||||
|
Connecting to Geoserver Over HTTPS |
||||||
|
</label> |
||||||
|
|
||||||
|
<a href="./" title="Connecting to Geoserver Over HTTPS" class="md-nav__link md-nav__link--active"> |
||||||
|
Connecting to Geoserver Over HTTPS |
||||||
|
</a> |
||||||
|
|
||||||
|
|
||||||
|
<nav class="md-nav md-nav--secondary"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<label class="md-nav__title" for="toc">Table of contents</label> |
||||||
|
<ul class="md-nav__list" data-md-scrollfix> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#install-jre-8" title="Install JRE 8" class="md-nav__link"> |
||||||
|
Install JRE 8 |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#create-geoserver-folder" title="Create geoserver folder" class="md-nav__link"> |
||||||
|
Create geoserver folder |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#downloaded-geoserver-on-my-computer-then-ftp-it-to-wisko" title="Downloaded geoserver on my computer, then ftp it to wisko" class="md-nav__link"> |
||||||
|
Downloaded geoserver on my computer, then ftp it to wisko |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#add-env-variable" title="add env variable" class="md-nav__link"> |
||||||
|
add env variable |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#make-myself-the-owner" title="make myself the owner" class="md-nav__link"> |
||||||
|
make myself the owner |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#start-geoserver" title="start geoserver" class="md-nav__link"> |
||||||
|
start geoserver |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#setting-up-certs" title="setting up certs" class="md-nav__link"> |
||||||
|
setting up certs |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#finishing-touches" title="Finishing Touches" class="md-nav__link"> |
||||||
|
Finishing Touches |
||||||
|
</a> |
||||||
|
|
||||||
|
<nav class="md-nav"> |
||||||
|
<ul class="md-nav__list"> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#the-solution" title="The solution:" class="md-nav__link"> |
||||||
|
The solution: |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
</ul> |
||||||
|
</nav> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</ul> |
||||||
|
|
||||||
|
</nav> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
</ul> |
||||||
|
</nav> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
<div class="md-sidebar md-sidebar--secondary" data-md-component="toc"> |
||||||
|
<div class="md-sidebar__scrollwrap"> |
||||||
|
<div class="md-sidebar__inner"> |
||||||
|
|
||||||
|
<nav class="md-nav md-nav--secondary"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<label class="md-nav__title" for="toc">Table of contents</label> |
||||||
|
<ul class="md-nav__list" data-md-scrollfix> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#install-jre-8" title="Install JRE 8" class="md-nav__link"> |
||||||
|
Install JRE 8 |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#create-geoserver-folder" title="Create geoserver folder" class="md-nav__link"> |
||||||
|
Create geoserver folder |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#downloaded-geoserver-on-my-computer-then-ftp-it-to-wisko" title="Downloaded geoserver on my computer, then ftp it to wisko" class="md-nav__link"> |
||||||
|
Downloaded geoserver on my computer, then ftp it to wisko |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#add-env-variable" title="add env variable" class="md-nav__link"> |
||||||
|
add env variable |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#make-myself-the-owner" title="make myself the owner" class="md-nav__link"> |
||||||
|
make myself the owner |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#start-geoserver" title="start geoserver" class="md-nav__link"> |
||||||
|
start geoserver |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#setting-up-certs" title="setting up certs" class="md-nav__link"> |
||||||
|
setting up certs |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#finishing-touches" title="Finishing Touches" class="md-nav__link"> |
||||||
|
Finishing Touches |
||||||
|
</a> |
||||||
|
|
||||||
|
<nav class="md-nav"> |
||||||
|
<ul class="md-nav__list"> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#the-solution" title="The solution:" class="md-nav__link"> |
||||||
|
The solution: |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
</ul> |
||||||
|
</nav> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</ul> |
||||||
|
|
||||||
|
</nav> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
<div class="md-content"> |
||||||
|
<article class="md-content__inner md-typeset"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h1 id="installing-geoserver-connecting-over-https">Installing Geoserver & Connecting Over HTTPS</h1> |
||||||
|
<p><a href="http://docs.geoserver.org/stable/en/user/installation/linux.html">Installing Geoserver instructions</a></p> |
||||||
|
<h2 id="install-jre-8">Install JRE 8</h2> |
||||||
|
<p><a href="https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-get-on-ubuntu-16-04">install jre 8</a></p> |
||||||
|
<pre><code>sudo apt-get update |
||||||
|
sudo apt-get install default-jre |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<h2 id="create-geoserver-folder">Create geoserver folder</h2> |
||||||
|
<p>in <code>/usr/share</code>:</p> |
||||||
|
<pre><code>mkdir geoserver |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<h2 id="downloaded-geoserver-on-my-computer-then-ftp-it-to-wisko">Downloaded geoserver on my computer, then ftp it to wisko</h2> |
||||||
|
<ul> |
||||||
|
<li>Download geoserver files on my computer</li> |
||||||
|
<li>unzip</li> |
||||||
|
<li>copy files from the geoserver folder onto wisko:</li> |
||||||
|
</ul> |
||||||
|
<p>from my computer:</p> |
||||||
|
<pre><code>scp -r /Users/melo/Desktop/geoserver-2.13.0 melo@159.65.75.41:/usr/share/geoserver |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>permission denied. fixed with:</p> |
||||||
|
<pre><code>sudo chown -R $USER:$USER /usr/share/geoserver |
||||||
|
|
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>but then i decided to use FileZilla to transfer the files once I fixed my pemissions. Maybe another day, scp.</p> |
||||||
|
<h2 id="add-env-variable">add env variable</h2> |
||||||
|
<p><code>echo "export GEOSERVER_HOME=/usr/share/geoserver" >\> ~/.profile</code></p> |
||||||
|
<h2 id="make-myself-the-owner">make myself the owner</h2> |
||||||
|
<p><code>sudo chown -R USER_NAME /usr/share/geoserver/</code></p> |
||||||
|
<h2 id="start-geoserver">start geoserver</h2> |
||||||
|
<pre><code>cd /usr/share/geoserver/bin |
||||||
|
sh startup.sh |
||||||
|
|
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<hr /> |
||||||
|
<h2 id="setting-up-certs">setting up certs</h2> |
||||||
|
<p>To enable SSL connections to the geoserver, let Apache handle the SSL connections, and then pass the requests on to geoserver locally.</p> |
||||||
|
<p>Apache already has certificates living at:</p> |
||||||
|
<pre><code>/etc/letsencrypt/live/smallmelo.com |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>and an HTTPS configuration file at:</p> |
||||||
|
<pre><code>/etc/apache2/sites-avaiable/smallmelo-le-ssl.conf |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>Modify the SSL configuration file to accept any URLs ending in <code>geoserver/</code> and forward them to the geoserver on port 8080.</p> |
||||||
|
<p>There should be a <code><VirtualHost></code> block that controls the settings for HTTPS requests. Add a <code><Location></code> block to configure the behavior for geoserver URLs (note the order):</p> |
||||||
|
<pre><code><VirtualHost *:443> |
||||||
|
|
||||||
|
... |
||||||
|
|
||||||
|
# This block is new: |
||||||
|
<Location /geoserver> |
||||||
|
ProxyPass http://localhost:8080/geoserver |
||||||
|
ProxyPassReverse http://localhost:8080/geoserver |
||||||
|
Order allow,deny |
||||||
|
Allow from all |
||||||
|
</Location> |
||||||
|
|
||||||
|
... |
||||||
|
|
||||||
|
# This must come after /geoserver block |
||||||
|
<Directory /var/www/smallmelo/public_html> |
||||||
|
... |
||||||
|
</Directory> |
||||||
|
|
||||||
|
</Location> |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>Note that the reverse proxy we have set up will forward requests <em>unencrypted</em> to the geoserver at port 8080, but because this happens within a single machine, there is no need to encrypt it.</p> |
||||||
|
<p>Now ensure the proxy mod is installed:</p> |
||||||
|
<pre><code>$ a2enmod proxy |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>and restart the server:</p> |
||||||
|
<pre><code>$ sudo service apache2 restart |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>One other thing we had to do was ensure that Jetty/geoserver were only listening for requests locally. This requies binding Jetty to the IP address 127.0.0.1.</p> |
||||||
|
<p>To do this, we modify one parameter in <code>app.ini</code>:</p> |
||||||
|
<pre><code>jetty.host=127.0.0.1 |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>Restart geoserver:</p> |
||||||
|
<pre><code>killall geoserver && sh /usr/share/geoserver/bin/startup.sh |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<h2 id="finishing-touches">Finishing Touches</h2> |
||||||
|
<p>Because Geosever was setup in order to be used in a dev environment for an xcode project, we needed to be able to ping a wms service from the site. </p> |
||||||
|
<p>The attempt resulted in <a href="https://gist.github.com/Smallmelo/acb41ea71dea6ca64b0652973ed04158">an error</a>.</p> |
||||||
|
<p><a href="https://gist.github.com/Smallmelo/acb41ea71dea6ca64b0652973ed04158#file-gistfile1-txt-L2572">This line</a> demonstrates that your network trace is seeing "localhost:8080", which it should not. So, it's an indication that the server might be returning URLs to resources that say "localhost:8080"</p> |
||||||
|
<h3 id="the-solution">The solution:</h3> |
||||||
|
<p>Update the proxy url in Geoserver's Global Settings: |
||||||
|
<img alt="Geoserver proxy settings" src="https://i.imgur.com/pQYIT0v.png" /></p> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</article> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</main> |
||||||
|
|
||||||
|
|
||||||
|
<footer class="md-footer"> |
||||||
|
|
||||||
|
<div class="md-footer-nav"> |
||||||
|
<nav class="md-footer-nav__inner md-grid"> |
||||||
|
|
||||||
|
<a href="../wisko-gitea/" title="Wisko Gitea" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
<i class="md-icon md-icon--arrow-back md-footer-nav__button"></i> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"> |
||||||
|
<span class="md-flex__ellipsis"> |
||||||
|
<span class="md-footer-nav__direction"> |
||||||
|
Previous |
||||||
|
</span> |
||||||
|
Wisko Gitea |
||||||
|
</span> |
||||||
|
</div> |
||||||
|
</a> |
||||||
|
|
||||||
|
|
||||||
|
</nav> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="md-footer-meta md-typeset"> |
||||||
|
<div class="md-footer-meta__inner md-grid"> |
||||||
|
<div class="md-footer-copyright"> |
||||||
|
|
||||||
|
<div class="md-footer-copyright__highlight"> |
||||||
|
Copyright 2018 Charles Reid |
||||||
|
</div> |
||||||
|
|
||||||
|
powered by |
||||||
|
<a href="http://www.mkdocs.org">MkDocs</a> |
||||||
|
and |
||||||
|
<a href="https://squidfunk.github.io/mkdocs-material/"> |
||||||
|
Material for MkDocs</a> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</footer> |
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
<script src="../assets/javascripts/application.0cf9b500.js"></script> |
||||||
|
|
||||||
|
<script>app.initialize({version:"0.17.3",url:{base:".."}})</script> |
||||||
|
|
||||||
|
<script src="../search/require.js"></script> |
||||||
|
|
||||||
|
<script src="../search/search.js"></script> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body> |
||||||
|
</html> |
@ -0,0 +1,401 @@ |
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!DOCTYPE html> |
||||||
|
<html lang="en" class="no-js"> |
||||||
|
<head> |
||||||
|
|
||||||
|
<meta charset="utf-8"> |
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1"> |
||||||
|
<meta http-equiv="x-ua-compatible" content="ie=edge"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="lang:clipboard.copy" content="Copy to clipboard"> |
||||||
|
|
||||||
|
<meta name="lang:clipboard.copied" content="Copied to clipboard"> |
||||||
|
|
||||||
|
<meta name="lang:search.language" content="en"> |
||||||
|
|
||||||
|
<meta name="lang:search.pipeline.stopwords" content="True"> |
||||||
|
|
||||||
|
<meta name="lang:search.pipeline.trimmer" content="True"> |
||||||
|
|
||||||
|
<meta name="lang:search.result.none" content="No matching documents"> |
||||||
|
|
||||||
|
<meta name="lang:search.result.one" content="1 matching document"> |
||||||
|
|
||||||
|
<meta name="lang:search.result.other" content="# matching documents"> |
||||||
|
|
||||||
|
<meta name="lang:search.tokenizer" content="[\s\-]+"> |
||||||
|
|
||||||
|
<link rel="shortcut icon" href="./"> |
||||||
|
<meta name="generator" content="mkdocs-0.17.3, mkdocs-material-2.7.2"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<title>the wisko manual</title> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="./assets/stylesheets/application.8d40d89b.css"> |
||||||
|
|
||||||
|
<link rel="stylesheet" href="./assets/stylesheets/application-palette.6079476c.css"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script src="./assets/javascripts/modernizr.1aa3b519.js"></script> |
||||||
|
|
||||||
|
|
||||||
|
<link href="https://fonts.gstatic.com" rel="preconnect" crossorigin> |
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono"> |
||||||
|
<style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style> |
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"> |
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="./css/custom.css"> |
||||||
|
|
||||||
|
|
||||||
|
</head> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<body dir="ltr" data-md-color-primary="green" data-md-color-accent="green"> |
||||||
|
|
||||||
|
<svg class="md-svg"> |
||||||
|
<defs> |
||||||
|
|
||||||
|
|
||||||
|
</defs> |
||||||
|
</svg> |
||||||
|
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="drawer" autocomplete="off"> |
||||||
|
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="search" autocomplete="off"> |
||||||
|
<label class="md-overlay" data-md-component="overlay" for="drawer"></label> |
||||||
|
|
||||||
|
<a href="#wisko-manual" tabindex="1" class="md-skip"> |
||||||
|
Skip to content |
||||||
|
</a> |
||||||
|
|
||||||
|
|
||||||
|
<header class="md-header" data-md-component="header"> |
||||||
|
<nav class="md-header-nav md-grid"> |
||||||
|
<div class="md-flex"> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
<a href="." title="the wisko manual" class="md-header-nav__button md-logo"> |
||||||
|
|
||||||
|
<i class="md-icon">cloud</i> |
||||||
|
|
||||||
|
</a> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
<label class="md-icon md-icon--menu md-header-nav__button" for="drawer"></label> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--stretch"> |
||||||
|
<div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"> |
||||||
|
|
||||||
|
|
||||||
|
<span class="md-header-nav__topic"> |
||||||
|
the wisko manual |
||||||
|
</span> |
||||||
|
<span class="md-header-nav__topic"> |
||||||
|
Index |
||||||
|
</span> |
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
|
||||||
|
|
||||||
|
<label class="md-icon md-icon--search md-header-nav__button" for="search"></label> |
||||||
|
|
||||||
|
<div class="md-search" data-md-component="search" role="dialog"> |
||||||
|
<label class="md-search__overlay" for="search"></label> |
||||||
|
<div class="md-search__inner" role="search"> |
||||||
|
<form class="md-search__form" name="search"> |
||||||
|
<input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> |
||||||
|
<label class="md-icon md-search__icon" for="search"></label> |
||||||
|
<button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1"> |
||||||
|
 |
||||||
|
</button> |
||||||
|
</form> |
||||||
|
<div class="md-search__output"> |
||||||
|
<div class="md-search__scrollwrap" data-md-scrollfix> |
||||||
|
<div class="md-search-result" data-md-component="result"> |
||||||
|
<div class="md-search-result__meta"> |
||||||
|
Type to start searching |
||||||
|
</div> |
||||||
|
<ol class="md-search-result__list"></ol> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
</nav> |
||||||
|
</header> |
||||||
|
|
||||||
|
<div class="md-container"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<main class="md-main"> |
||||||
|
<div class="md-main__inner md-grid" data-md-component="container"> |
||||||
|
|
||||||
|
|
||||||
|
<div class="md-sidebar md-sidebar--primary" data-md-component="navigation"> |
||||||
|
<div class="md-sidebar__scrollwrap"> |
||||||
|
<div class="md-sidebar__inner"> |
||||||
|
<nav class="md-nav md-nav--primary" data-md-level="0"> |
||||||
|
<label class="md-nav__title md-nav__title--site" for="drawer"> |
||||||
|
<span class="md-nav__button md-logo"> |
||||||
|
|
||||||
|
<i class="md-icon">cloud</i> |
||||||
|
|
||||||
|
</span> |
||||||
|
the wisko manual |
||||||
|
</label> |
||||||
|
|
||||||
|
<ul class="md-nav__list" data-md-scrollfix> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item md-nav__item--active"> |
||||||
|
|
||||||
|
<input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="toc"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a href="." title="Index" class="md-nav__link md-nav__link--active"> |
||||||
|
Index |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="boot2root/" title="Wisko Boot to Root" class="md-nav__link"> |
||||||
|
Wisko Boot to Root |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="faq/" title="Wisko FAQ" class="md-nav__link"> |
||||||
|
Wisko FAQ |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="locked-out/" title="Locked Out of Wisko" class="md-nav__link"> |
||||||
|
Locked Out of Wisko |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="smallmelo-migration-1/" title="smallmelo.com Migration: Part 1" class="md-nav__link"> |
||||||
|
smallmelo.com Migration: Part 1 |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="smallmelo-migration-2/" title="smallmelo.com Migration: Part 2" class="md-nav__link"> |
||||||
|
smallmelo.com Migration: Part 2 |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="smallmelo-migration-3/" title="smallmelo.com Migration: Part 3" class="md-nav__link"> |
||||||
|
smallmelo.com Migration: Part 3 |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="wisko-gitea/" title="Wisko Gitea" class="md-nav__link"> |
||||||
|
Wisko Gitea |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="geoserver-https/" title="Connecting to Geoserver Over HTTPS" class="md-nav__link"> |
||||||
|
Connecting to Geoserver Over HTTPS |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
</ul> |
||||||
|
</nav> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
<div class="md-sidebar md-sidebar--secondary" data-md-component="toc"> |
||||||
|
<div class="md-sidebar__scrollwrap"> |
||||||
|
<div class="md-sidebar__inner"> |
||||||
|
|
||||||
|
<nav class="md-nav md-nav--secondary"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</nav> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
<div class="md-content"> |
||||||
|
<article class="md-content__inner md-typeset"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h1 id="wisko-manual">Wisko Manual</h1> |
||||||
|
<p>The wisko manual.</p> |
||||||
|
<p>IP: 159.65.75.41</p> |
||||||
|
<p><a href="https://git.charlesreid1.com/charlesreid1/wisko-manual">git repo - wisko manual</a> by @charles</p> |
||||||
|
<p><a href="https://git.charlesreid1.com/dotfiles/wisko">git repo - wisko dotfiles</a> by @charles</p> |
||||||
|
<p><a href="boot2root/">wisko boot to root</a> by @charles</p> |
||||||
|
<p><a href="faq/">wisko FAQ</a> by @charles</p> |
||||||
|
<p><a href="locked-out/">locked out of wisko</a> by @melo and @charles</p> |
||||||
|
<p><a href="smallmelo-migration-1/">smallmelo.com migration: part 1 (ssh + wordpress)</a> by @melo</p> |
||||||
|
<p><a href="smallmelo-migration-2/">smallmelo.com migration: part 2 (all the things)</a> by @melo</p> |
||||||
|
<p><a href="smallmelo-migration-3/">smallmelo.com migration: part 3 (allthehatsformaps to smallmelo)</a> by @melo</p> |
||||||
|
<p><a href="wisko-gitea/">wisko gitea</a> by @charles</p> |
||||||
|
<p><a href="geoserver-https/">installing geoserver and connecting over https</a> by @melo and @charles</p> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</article> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</main> |
||||||
|
|
||||||
|
|
||||||
|
<footer class="md-footer"> |
||||||
|
|
||||||
|
<div class="md-footer-nav"> |
||||||
|
<nav class="md-footer-nav__inner md-grid"> |
||||||
|
|
||||||
|
|
||||||
|
<a href="boot2root/" title="Wisko Boot to Root" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"> |
||||||
|
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"> |
||||||
|
<span class="md-flex__ellipsis"> |
||||||
|
<span class="md-footer-nav__direction"> |
||||||
|
Next |
||||||
|
</span> |
||||||
|
Wisko Boot to Root |
||||||
|
</span> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
<i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i> |
||||||
|
</div> |
||||||
|
</a> |
||||||
|
|
||||||
|
</nav> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="md-footer-meta md-typeset"> |
||||||
|
<div class="md-footer-meta__inner md-grid"> |
||||||
|
<div class="md-footer-copyright"> |
||||||
|
|
||||||
|
<div class="md-footer-copyright__highlight"> |
||||||
|
Copyright 2018 Charles Reid |
||||||
|
</div> |
||||||
|
|
||||||
|
powered by |
||||||
|
<a href="http://www.mkdocs.org">MkDocs</a> |
||||||
|
and |
||||||
|
<a href="https://squidfunk.github.io/mkdocs-material/"> |
||||||
|
Material for MkDocs</a> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</footer> |
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
<script src="./assets/javascripts/application.0cf9b500.js"></script> |
||||||
|
|
||||||
|
<script>app.initialize({version:"0.17.3",url:{base:"."}})</script> |
||||||
|
|
||||||
|
<script src="./search/require.js"></script> |
||||||
|
|
||||||
|
<script src="./search/search.js"></script> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body> |
||||||
|
</html> |
@ -0,0 +1,705 @@ |
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!DOCTYPE html> |
||||||
|
<html lang="en" class="no-js"> |
||||||
|
<head> |
||||||
|
|
||||||
|
<meta charset="utf-8"> |
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1"> |
||||||
|
<meta http-equiv="x-ua-compatible" content="ie=edge"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="lang:clipboard.copy" content="Copy to clipboard"> |
||||||
|
|
||||||
|
<meta name="lang:clipboard.copied" content="Copied to clipboard"> |
||||||
|
|
||||||
|
<meta name="lang:search.language" content="en"> |
||||||
|
|
||||||
|
<meta name="lang:search.pipeline.stopwords" content="True"> |
||||||
|
|
||||||
|
<meta name="lang:search.pipeline.trimmer" content="True"> |
||||||
|
|
||||||
|
<meta name="lang:search.result.none" content="No matching documents"> |
||||||
|
|
||||||
|
<meta name="lang:search.result.one" content="1 matching document"> |
||||||
|
|
||||||
|
<meta name="lang:search.result.other" content="# matching documents"> |
||||||
|
|
||||||
|
<meta name="lang:search.tokenizer" content="[\s\-]+"> |
||||||
|
|
||||||
|
<link rel="shortcut icon" href="../"> |
||||||
|
<meta name="generator" content="mkdocs-0.17.3, mkdocs-material-2.7.2"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<title>Locked Out of Wisko - the wisko manual</title> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="../assets/stylesheets/application.8d40d89b.css"> |
||||||
|
|
||||||
|
<link rel="stylesheet" href="../assets/stylesheets/application-palette.6079476c.css"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script src="../assets/javascripts/modernizr.1aa3b519.js"></script> |
||||||
|
|
||||||
|
|
||||||
|
<link href="https://fonts.gstatic.com" rel="preconnect" crossorigin> |
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono"> |
||||||
|
<style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style> |
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"> |
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="../css/custom.css"> |
||||||
|
|
||||||
|
|
||||||
|
</head> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<body dir="ltr" data-md-color-primary="green" data-md-color-accent="green"> |
||||||
|
|
||||||
|
<svg class="md-svg"> |
||||||
|
<defs> |
||||||
|
|
||||||
|
|
||||||
|
</defs> |
||||||
|
</svg> |
||||||
|
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="drawer" autocomplete="off"> |
||||||
|
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="search" autocomplete="off"> |
||||||
|
<label class="md-overlay" data-md-component="overlay" for="drawer"></label> |
||||||
|
|
||||||
|
<a href="#locked-out-of-wisko" tabindex="1" class="md-skip"> |
||||||
|
Skip to content |
||||||
|
</a> |
||||||
|
|
||||||
|
|
||||||
|
<header class="md-header" data-md-component="header"> |
||||||
|
<nav class="md-header-nav md-grid"> |
||||||
|
<div class="md-flex"> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
<a href=".." title="the wisko manual" class="md-header-nav__button md-logo"> |
||||||
|
|
||||||
|
<i class="md-icon">cloud</i> |
||||||
|
|
||||||
|
</a> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
<label class="md-icon md-icon--menu md-header-nav__button" for="drawer"></label> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--stretch"> |
||||||
|
<div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"> |
||||||
|
|
||||||
|
|
||||||
|
<span class="md-header-nav__topic"> |
||||||
|
the wisko manual |
||||||
|
</span> |
||||||
|
<span class="md-header-nav__topic"> |
||||||
|
Locked Out of Wisko |
||||||
|
</span> |
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
|
||||||
|
|
||||||
|
<label class="md-icon md-icon--search md-header-nav__button" for="search"></label> |
||||||
|
|
||||||
|
<div class="md-search" data-md-component="search" role="dialog"> |
||||||
|
<label class="md-search__overlay" for="search"></label> |
||||||
|
<div class="md-search__inner" role="search"> |
||||||
|
<form class="md-search__form" name="search"> |
||||||
|
<input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> |
||||||
|
<label class="md-icon md-search__icon" for="search"></label> |
||||||
|
<button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1"> |
||||||
|
 |
||||||
|
</button> |
||||||
|
</form> |
||||||
|
<div class="md-search__output"> |
||||||
|
<div class="md-search__scrollwrap" data-md-scrollfix> |
||||||
|
<div class="md-search-result" data-md-component="result"> |
||||||
|
<div class="md-search-result__meta"> |
||||||
|
Type to start searching |
||||||
|
</div> |
||||||
|
<ol class="md-search-result__list"></ol> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
</nav> |
||||||
|
</header> |
||||||
|
|
||||||
|
<div class="md-container"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<main class="md-main"> |
||||||
|
<div class="md-main__inner md-grid" data-md-component="container"> |
||||||
|
|
||||||
|
|
||||||
|
<div class="md-sidebar md-sidebar--primary" data-md-component="navigation"> |
||||||
|
<div class="md-sidebar__scrollwrap"> |
||||||
|
<div class="md-sidebar__inner"> |
||||||
|
<nav class="md-nav md-nav--primary" data-md-level="0"> |
||||||
|
<label class="md-nav__title md-nav__title--site" for="drawer"> |
||||||
|
<span class="md-nav__button md-logo"> |
||||||
|
|
||||||
|
<i class="md-icon">cloud</i> |
||||||
|
|
||||||
|
</span> |
||||||
|
the wisko manual |
||||||
|
</label> |
||||||
|
|
||||||
|
<ul class="md-nav__list" data-md-scrollfix> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href=".." title="Index" class="md-nav__link"> |
||||||
|
Index |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../boot2root/" title="Wisko Boot to Root" class="md-nav__link"> |
||||||
|
Wisko Boot to Root |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../faq/" title="Wisko FAQ" class="md-nav__link"> |
||||||
|
Wisko FAQ |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item md-nav__item--active"> |
||||||
|
|
||||||
|
<input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="toc"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<label class="md-nav__link md-nav__link--active" for="toc"> |
||||||
|
Locked Out of Wisko |
||||||
|
</label> |
||||||
|
|
||||||
|
<a href="./" title="Locked Out of Wisko" class="md-nav__link md-nav__link--active"> |
||||||
|
Locked Out of Wisko |
||||||
|
</a> |
||||||
|
|
||||||
|
|
||||||
|
<nav class="md-nav md-nav--secondary"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<label class="md-nav__title" for="toc">Table of contents</label> |
||||||
|
<ul class="md-nav__list" data-md-scrollfix> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#creating-a-new-public-key" title="creating a new public key" class="md-nav__link"> |
||||||
|
creating a new public key |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#copy-key-to-do-account" title="copy key to do account" class="md-nav__link"> |
||||||
|
copy key to do account |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#login-add-my-key-to-the-server" title="login/ add my key to the server" class="md-nav__link"> |
||||||
|
login/ add my key to the server |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#ssh-debug-mode-w-charles" title="ssh debug mode w/ charles" class="md-nav__link"> |
||||||
|
ssh debug mode w/ charles |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</ul> |
||||||
|
|
||||||
|
</nav> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../smallmelo-migration-1/" title="smallmelo.com Migration: Part 1" class="md-nav__link"> |
||||||
|
smallmelo.com Migration: Part 1 |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../smallmelo-migration-2/" title="smallmelo.com Migration: Part 2" class="md-nav__link"> |
||||||
|
smallmelo.com Migration: Part 2 |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../smallmelo-migration-3/" title="smallmelo.com Migration: Part 3" class="md-nav__link"> |
||||||
|
smallmelo.com Migration: Part 3 |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../wisko-gitea/" title="Wisko Gitea" class="md-nav__link"> |
||||||
|
Wisko Gitea |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../geoserver-https/" title="Connecting to Geoserver Over HTTPS" class="md-nav__link"> |
||||||
|
Connecting to Geoserver Over HTTPS |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
</ul> |
||||||
|
</nav> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
<div class="md-sidebar md-sidebar--secondary" data-md-component="toc"> |
||||||
|
<div class="md-sidebar__scrollwrap"> |
||||||
|
<div class="md-sidebar__inner"> |
||||||
|
|
||||||
|
<nav class="md-nav md-nav--secondary"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<label class="md-nav__title" for="toc">Table of contents</label> |
||||||
|
<ul class="md-nav__list" data-md-scrollfix> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#creating-a-new-public-key" title="creating a new public key" class="md-nav__link"> |
||||||
|
creating a new public key |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#copy-key-to-do-account" title="copy key to do account" class="md-nav__link"> |
||||||
|
copy key to do account |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#login-add-my-key-to-the-server" title="login/ add my key to the server" class="md-nav__link"> |
||||||
|
login/ add my key to the server |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#ssh-debug-mode-w-charles" title="ssh debug mode w/ charles" class="md-nav__link"> |
||||||
|
ssh debug mode w/ charles |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</ul> |
||||||
|
|
||||||
|
</nav> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
<div class="md-content"> |
||||||
|
<article class="md-content__inner md-typeset"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h1 id="locked-out-of-wisko">locked out of wisko</h1> |
||||||
|
<p>no problem, i got this.</p> |
||||||
|
<pre><code>$ ssh melo@159.65.75.41 |
||||||
|
|
||||||
|
ECDSA key fingerprint is ... |
||||||
|
|
||||||
|
Are you sure you want to continue connecting (yes/no)? yes |
||||||
|
|
||||||
|
Warning: Permanently added '159.65.75.41' (ECDSA) to the list of known hosts. |
||||||
|
|
||||||
|
melo@159.65.75.41: Permission denied (publickey). |
||||||
|
|
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>oh, so i have to generate a new key pair. lemme google that.</p> |
||||||
|
<h2 id="creating-a-new-public-key">creating a new public key</h2> |
||||||
|
<p><a href="https://www.digitalocean.com/community/tutorials/how-to-use-ssh-keys-with-digitalocean-droplets">help from do</a></p> |
||||||
|
<pre><code>ssh-keygen -t rsa |
||||||
|
Enter file in which to save the key (/Users/melo/.ssh/id_rsa): |
||||||
|
|
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>hit enter to store in user ssh root folder</p> |
||||||
|
<pre><code>Enter passphrase (empty for no passphrase): |
||||||
|
Enter same passphrase again |
||||||
|
|
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>hit enter to store without passphrase</p> |
||||||
|
<h2 id="copy-key-to-do-account">copy key to do account</h2> |
||||||
|
<p>run from the command line:</p> |
||||||
|
<pre><code>cat ~/.ssh/id_rsa.pub |
||||||
|
|
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>open settings > security in do, selection to add new key |
||||||
|
paste in the above key and name it accordingly</p> |
||||||
|
<h2 id="login-add-my-key-to-the-server">login/ add my key to the server</h2> |
||||||
|
<p>(<strong>WARNING:</strong> possibly bad to run these commands.)</p> |
||||||
|
<pre><code>cat ~/.ssh/id_rsa.pub | ssh melo@159.65.75.41 "cat >> /home/melo/.ssh/authorized_keys" |
||||||
|
|
||||||
|
melo@159.65.75.41: Permission denied (publickey). |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>no? </p> |
||||||
|
<pre><code>cat ~/.ssh/id\_rsa.pub | ssh root@159.65.75.41 "cat >> ~/.ssh/authorized\_keys" |
||||||
|
root@159.65.75.41: Permission denied (publickey). |
||||||
|
|
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>oh yea, charles turned off root access via command line.</p> |
||||||
|
<h2 id="ssh-debug-mode-w-charles">ssh debug mode w/ charles</h2> |
||||||
|
<pre><code>ssh -vvv melo@159.65.75.41 |
||||||
|
|
||||||
|
|
||||||
|
root@159.65.75.41: Permission denied (publickey). |
||||||
|
Melo:~ melo$ ssh -vvv melo@159.65.75.41 |
||||||
|
OpenSSH_7.6p1, LibreSSL 2.6.2 |
||||||
|
debug1: Reading configuration data /Users/melo/.ssh/config |
||||||
|
debug1: Reading configuration data /etc/ssh/ssh_config |
||||||
|
debug1: /etc/ssh/ssh_config line 48: Applying options for * |
||||||
|
debug2: ssh_connect_direct: needpriv 0 |
||||||
|
debug1: Connecting to 159.65.75.41 port 22. |
||||||
|
debug1: Connection established. |
||||||
|
debug1: identity file /Users/melo/.ssh/id_rsa type 0 |
||||||
|
debug1: key_load_public: No such file or directory |
||||||
|
debug1: identity file /Users/melo/.ssh/id_rsa-cert type -1 |
||||||
|
debug1: key_load_public: No such file or directory |
||||||
|
debug1: identity file /Users/melo/.ssh/id_dsa type -1 |
||||||
|
debug1: key_load_public: No such file or directory |
||||||
|
debug1: identity file /Users/melo/.ssh/id_dsa-cert type -1 |
||||||
|
debug1: key_load_public: No such file or directory |
||||||
|
debug1: identity file /Users/melo/.ssh/id_ecdsa type -1 |
||||||
|
debug1: key_load_public: No such file or directory |
||||||
|
debug1: identity file /Users/melo/.ssh/id_ecdsa-cert type -1 |
||||||
|
debug1: key_load_public: No such file or directory |
||||||
|
debug1: identity file /Users/melo/.ssh/id_ed25519 type -1 |
||||||
|
debug1: key_load_public: No such file or directory |
||||||
|
debug1: identity file /Users/melo/.ssh/id_ed25519-cert type -1 |
||||||
|
debug1: Local version string SSH-2.0-OpenSSH_7.6 |
||||||
|
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.2p2 Ubuntu-4ubuntu2.4 |
||||||
|
debug1: match: OpenSSH_7.2p2 Ubuntu-4ubuntu2.4 pat OpenSSH* compat 0x04000000 |
||||||
|
debug3: fd 5 is O_NONBLOCK |
||||||
|
debug1: Authenticating to 159.65.75.41:22 as 'melo' |
||||||
|
debug3: hostkeys_foreach: reading file "/Users/melo/.ssh/known_hosts" |
||||||
|
debug3: record_hostkey: found key type ECDSA in file /Users/melo/.ssh/known_hosts:20 |
||||||
|
debug3: load_hostkeys: loaded 1 keys from 159.65.75.41 |
||||||
|
debug3: order_hostkeyalgs: prefer hostkeyalgs: ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521 |
||||||
|
debug3: send packet: type 20 |
||||||
|
debug1: SSH2_MSG_KEXINIT sent |
||||||
|
debug3: receive packet: type 20 |
||||||
|
debug1: SSH2_MSG_KEXINIT received |
||||||
|
debug2: local client KEXINIT proposal |
||||||
|
debug2: KEX algorithms: curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha256,diffie-hellman-group14-sha1,ext-info-c |
||||||
|
debug2: host key algorithms: ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa |
||||||
|
debug2: ciphers ctos: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com |
||||||
|
debug2: ciphers stoc: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com |
||||||
|
debug2: MACs ctos: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1 |
||||||
|
debug2: MACs stoc: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1 |
||||||
|
debug2: compression ctos: none,zlib@openssh.com,zlib |
||||||
|
debug2: compression stoc: none,zlib@openssh.com,zlib |
||||||
|
debug2: languages ctos: |
||||||
|
debug2: languages stoc: |
||||||
|
debug2: first_kex_follows 0 |
||||||
|
debug2: reserved 0 |
||||||
|
debug2: peer server KEXINIT proposal |
||||||
|
debug2: KEX algorithms: curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1 |
||||||
|
debug2: host key algorithms: ssh-rsa,rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519 |
||||||
|
debug2: ciphers ctos: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com |
||||||
|
debug2: ciphers stoc: chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com |
||||||
|
debug2: MACs ctos: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1 |
||||||
|
debug2: MACs stoc: umac-64-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-64@openssh.com,umac-128@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha1 |
||||||
|
debug2: compression ctos: none,zlib@openssh.com |
||||||
|
debug2: compression stoc: none,zlib@openssh.com |
||||||
|
debug2: languages ctos: |
||||||
|
debug2: languages stoc: |
||||||
|
debug2: first_kex_follows 0 |
||||||
|
debug2: reserved 0 |
||||||
|
debug1: kex: algorithm: curve25519-sha256@libssh.org |
||||||
|
debug1: kex: host key algorithm: ecdsa-sha2-nistp256 |
||||||
|
debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none |
||||||
|
debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none |
||||||
|
debug3: send packet: type 30 |
||||||
|
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY |
||||||
|
debug3: receive packet: type 31 |
||||||
|
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:y1jQr+0TsjhrdM3TGWSZ/BGNdzxrK7u+hUXS/TzS1ss |
||||||
|
debug3: hostkeys_foreach: reading file "/Users/melo/.ssh/known_hosts" |
||||||
|
debug3: record_hostkey: found key type ECDSA in file /Users/melo/.ssh/known_hosts:20 |
||||||
|
debug3: load_hostkeys: loaded 1 keys from 159.65.75.41 |
||||||
|
debug1: Host '159.65.75.41' is known and matches the ECDSA host key. |
||||||
|
debug1: Found key in /Users/melo/.ssh/known_hosts:20 |
||||||
|
debug3: send packet: type 21 |
||||||
|
debug2: set_newkeys: mode 1 |
||||||
|
debug1: rekey after 134217728 blocks |
||||||
|
debug1: SSH2_MSG_NEWKEYS sent |
||||||
|
debug1: expecting SSH2_MSG_NEWKEYS |
||||||
|
debug3: receive packet: type 21 |
||||||
|
debug1: SSH2_MSG_NEWKEYS received |
||||||
|
debug2: set_newkeys: mode 0 |
||||||
|
debug1: rekey after 134217728 blocks |
||||||
|
debug2: key: /Users/melo/.ssh/id_rsa (0x7f897241b200) |
||||||
|
debug2: key: /Users/melo/.ssh/id_dsa (0x0) |
||||||
|
debug2: key: /Users/melo/.ssh/id_ecdsa (0x0) |
||||||
|
debug2: key: /Users/melo/.ssh/id_ed25519 (0x0) |
||||||
|
debug3: send packet: type 5 |
||||||
|
debug3: receive packet: type 7 |
||||||
|
debug1: SSH2_MSG_EXT_INFO received |
||||||
|
debug1: kex_input_ext_info: server-sig-algs=<rsa-sha2-256,rsa-sha2-512> |
||||||
|
debug3: receive packet: type 6 |
||||||
|
debug2: service_accept: ssh-userauth |
||||||
|
debug1: SSH2_MSG_SERVICE_ACCEPT received |
||||||
|
debug3: send packet: type 50 |
||||||
|
debug3: receive packet: type 51 |
||||||
|
debug1: Authentications that can continue: publickey |
||||||
|
debug3: start over, passed a different list publickey |
||||||
|
debug3: preferred publickey,keyboard-interactive,password |
||||||
|
debug3: authmethod_lookup publickey |
||||||
|
debug3: remaining preferred: keyboard-interactive,password |
||||||
|
debug3: authmethod_is_enabled publickey |
||||||
|
debug1: Next authentication method: publickey |
||||||
|
debug1: Offering public key: RSA SHA256:iIOTgB1gfdbEi11gdn426XlamlH53riKdLqImE22zi8 /Users/melo/.ssh/id_rsa |
||||||
|
debug3: send_pubkey_test |
||||||
|
debug3: send packet: type 50 |
||||||
|
debug2: we sent a publickey packet, wait for reply |
||||||
|
debug3: receive packet: type 51 |
||||||
|
debug1: Authentications that can continue: publickey |
||||||
|
debug1: Trying private key: /Users/melo/.ssh/id_dsa |
||||||
|
debug3: no such identity: /Users/melo/.ssh/id_dsa: No such file or directory |
||||||
|
debug1: Trying private key: /Users/melo/.ssh/id_ecdsa |
||||||
|
debug3: no such identity: /Users/melo/.ssh/id_ecdsa: No such file or directory |
||||||
|
debug1: Trying private key: /Users/melo/.ssh/id_ed25519 |
||||||
|
debug3: no such identity: /Users/melo/.ssh/id_ed25519: No such file or directory |
||||||
|
debug2: we did not send a packet, disable method |
||||||
|
debug1: No more authentication methods to try. |
||||||
|
melo@159.65.75.41: Permission denied (publickey). |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>Error message is totally unhelpful. Googling turns up some problems with file permissions and with public key access being disabled in SSH config file.</p> |
||||||
|
<p>Logged in via DO, opened a console on the machine (Droplets > More > Access console), and found that the ssh folder was owned by root. Nobody can log in via ssh. Charles updated the permissions:</p> |
||||||
|
<pre><code>sudo chown -R melo:melo ~/.ssh |
||||||
|
sudo chmod 700 ~/.ssh |
||||||
|
sudo chmod 600 ~/.ssh/* |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>This still didn't work.</p> |
||||||
|
<p>Finally, uninstalling/reinstalling openssh did the trick:</p> |
||||||
|
<pre><code>sudo apt-get purge openssh-client openssh-server |
||||||
|
sudo apt-get install openssh-client openssh-server |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>then remove the <code>.ssh</code> folder in the root user's home directory. Regenerate the keys as the root user:</p> |
||||||
|
<pre><code>ssh-keygen |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>Now the machine should be ready to run the reinstalled SSH server.</p> |
||||||
|
<p>To enable passwordless access, assuming you are connecting from a local machine (Mac) to a remote machine (wisko):</p> |
||||||
|
<p>On the Mac: generate your ssh key:</p> |
||||||
|
<pre><code>ssh-keygen |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>print your public key to the screen:</p> |
||||||
|
<pre><code>cat ~/.ssh/id_rsa.pub |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>Copy this key to the clipboard.</p> |
||||||
|
<p>On the Mac, log in to wisko:</p> |
||||||
|
<pre><code>ssh melo@<wisko-ip> |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>Once you are logged in, edit the following file with your favorite text editor (e.g., nano):</p> |
||||||
|
<pre><code>nano ~/.ssh/authorized_keys |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>Add the public key from your Mac as the last line of the file. Save it and close it.</p> |
||||||
|
<p>Now test out your passwordless access: SSH from the Mac to wisko. The changes should take effect immediately.</p> |
||||||
|
<p><a href="http://charlesreid1.com/wiki/SSH#Passwordless_Login">Link to Uncle Chucky's Passwordless SSH Login Guide</a></p> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</article> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</main> |
||||||
|
|
||||||
|
|
||||||
|
<footer class="md-footer"> |
||||||
|
|
||||||
|
<div class="md-footer-nav"> |
||||||
|
<nav class="md-footer-nav__inner md-grid"> |
||||||
|
|
||||||
|
<a href="../faq/" title="Wisko FAQ" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
<i class="md-icon md-icon--arrow-back md-footer-nav__button"></i> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"> |
||||||
|
<span class="md-flex__ellipsis"> |
||||||
|
<span class="md-footer-nav__direction"> |
||||||
|
Previous |
||||||
|
</span> |
||||||
|
Wisko FAQ |
||||||
|
</span> |
||||||
|
</div> |
||||||
|
</a> |
||||||
|
|
||||||
|
|
||||||
|
<a href="../smallmelo-migration-1/" title="smallmelo.com Migration: Part 1" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"> |
||||||
|
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"> |
||||||
|
<span class="md-flex__ellipsis"> |
||||||
|
<span class="md-footer-nav__direction"> |
||||||
|
Next |
||||||
|
</span> |
||||||
|
smallmelo.com Migration: Part 1 |
||||||
|
</span> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
<i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i> |
||||||
|
</div> |
||||||
|
</a> |
||||||
|
|
||||||
|
</nav> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="md-footer-meta md-typeset"> |
||||||
|
<div class="md-footer-meta__inner md-grid"> |
||||||
|
<div class="md-footer-copyright"> |
||||||
|
|
||||||
|
<div class="md-footer-copyright__highlight"> |
||||||
|
Copyright 2018 Charles Reid |
||||||
|
</div> |
||||||
|
|
||||||
|
powered by |
||||||
|
<a href="http://www.mkdocs.org">MkDocs</a> |
||||||
|
and |
||||||
|
<a href="https://squidfunk.github.io/mkdocs-material/"> |
||||||
|
Material for MkDocs</a> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</footer> |
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
<script src="../assets/javascripts/application.0cf9b500.js"></script> |
||||||
|
|
||||||
|
<script>app.initialize({version:"0.17.3",url:{base:".."}})</script> |
||||||
|
|
||||||
|
<script src="../search/require.js"></script> |
||||||
|
|
||||||
|
<script src="../search/search.js"></script> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body> |
||||||
|
</html> |
@ -1,26 +0,0 @@ |
|||||||
site_name: the wisko manual |
|
||||||
docs_dir: docs |
|
||||||
site_dir: site |
|
||||||
theme: |
|
||||||
name: null |
|
||||||
custom_dir: 'mkdocs-material/material' |
|
||||||
palette: |
|
||||||
primary: 'green' |
|
||||||
accent: 'green' |
|
||||||
logo: |
|
||||||
icon: 'cloud' |
|
||||||
font: |
|
||||||
text: 'Roboto' |
|
||||||
code: 'Roboto Mono' |
|
||||||
extra_css: |
|
||||||
- css/custom.css |
|
||||||
pages: |
|
||||||
- 'Index' : 'index.md' |
|
||||||
- 'Wisko Boot to Root': 'boot2root.md' |
|
||||||
- 'Wisko FAQ': 'faq.md' |
|
||||||
- 'Locked Out of Wisko': 'locked-out.md' |
|
||||||
- 'smallmelo.com Migration: Part 1': 'smallmelo-migration-1.md' |
|
||||||
- 'smallmelo.com Migration: Part 2': 'smallmelo-migration-2.md' |
|
||||||
- 'smallmelo.com Migration: Part 3': 'smallmelo-migration-3.md' |
|
||||||
- 'Wisko Gitea': 'wisko-gitea.md' |
|
||||||
- 'Connecting to Geoserver Over HTTPS': 'geoserver-https.md' |
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,36 @@ |
|||||||
|
/* |
||||||
|
RequireJS 2.1.16 Copyright (c) 2010-2015, The Dojo Foundation All Rights Reserved. |
||||||
|
Available via the MIT or new BSD license. |
||||||
|
see: http://github.com/jrburke/requirejs for details
|
||||||
|
*/ |
||||||
|
var requirejs,require,define; |
||||||
|
(function(ba){function G(b){return"[object Function]"===K.call(b)}function H(b){return"[object Array]"===K.call(b)}function v(b,c){if(b){var d;for(d=0;d<b.length&&(!b[d]||!c(b[d],d,b));d+=1);}}function T(b,c){if(b){var d;for(d=b.length-1;-1<d&&(!b[d]||!c(b[d],d,b));d-=1);}}function t(b,c){return fa.call(b,c)}function m(b,c){return t(b,c)&&b[c]}function B(b,c){for(var d in b)if(t(b,d)&&c(b[d],d))break}function U(b,c,d,e){c&&B(c,function(c,g){if(d||!t(b,g))e&&"object"===typeof c&&c&&!H(c)&&!G(c)&&!(c instanceof |
||||||
|
RegExp)?(b[g]||(b[g]={}),U(b[g],c,d,e)):b[g]=c});return b}function u(b,c){return function(){return c.apply(b,arguments)}}function ca(b){throw b;}function da(b){if(!b)return b;var c=ba;v(b.split("."),function(b){c=c[b]});return c}function C(b,c,d,e){c=Error(c+"\nhttp://requirejs.org/docs/errors.html#"+b);c.requireType=b;c.requireModules=e;d&&(c.originalError=d);return c}function ga(b){function c(a,k,b){var f,l,c,d,e,g,i,p,k=k&&k.split("/"),h=j.map,n=h&&h["*"];if(a){a=a.split("/");l=a.length-1;j.nodeIdCompat&& |
||||||
|
Q.test(a[l])&&(a[l]=a[l].replace(Q,""));"."===a[0].charAt(0)&&k&&(l=k.slice(0,k.length-1),a=l.concat(a));l=a;for(c=0;c<l.length;c++)if(d=l[c],"."===d)l.splice(c,1),c-=1;else if(".."===d&&!(0===c||1==c&&".."===l[2]||".."===l[c-1])&&0<c)l.splice(c-1,2),c-=2;a=a.join("/")}if(b&&h&&(k||n)){l=a.split("/");c=l.length;a:for(;0<c;c-=1){e=l.slice(0,c).join("/");if(k)for(d=k.length;0<d;d-=1)if(b=m(h,k.slice(0,d).join("/")))if(b=m(b,e)){f=b;g=c;break a}!i&&(n&&m(n,e))&&(i=m(n,e),p=c)}!f&&i&&(f=i,g=p);f&&(l.splice(0, |
||||||
|
g,f),a=l.join("/"))}return(f=m(j.pkgs,a))?f:a}function d(a){z&&v(document.getElementsByTagName("script"),function(k){if(k.getAttribute("data-requiremodule")===a&&k.getAttribute("data-requirecontext")===i.contextName)return k.parentNode.removeChild(k),!0})}function e(a){var k=m(j.paths,a);if(k&&H(k)&&1<k.length)return k.shift(),i.require.undef(a),i.makeRequire(null,{skipMap:!0})([a]),!0}function n(a){var k,c=a?a.indexOf("!"):-1;-1<c&&(k=a.substring(0,c),a=a.substring(c+1,a.length));return[k,a]}function p(a, |
||||||
|
k,b,f){var l,d,e=null,g=k?k.name:null,j=a,p=!0,h="";a||(p=!1,a="_@r"+(K+=1));a=n(a);e=a[0];a=a[1];e&&(e=c(e,g,f),d=m(r,e));a&&(e?h=d&&d.normalize?d.normalize(a,function(a){return c(a,g,f)}):-1===a.indexOf("!")?c(a,g,f):a:(h=c(a,g,f),a=n(h),e=a[0],h=a[1],b=!0,l=i.nameToUrl(h)));b=e&&!d&&!b?"_unnormalized"+(O+=1):"";return{prefix:e,name:h,parentMap:k,unnormalized:!!b,url:l,originalName:j,isDefine:p,id:(e?e+"!"+h:h)+b}}function s(a){var k=a.id,b=m(h,k);b||(b=h[k]=new i.Module(a));return b}function q(a, |
||||||
|
k,b){var f=a.id,c=m(h,f);if(t(r,f)&&(!c||c.defineEmitComplete))"defined"===k&&b(r[f]);else if(c=s(a),c.error&&"error"===k)b(c.error);else c.on(k,b)}function w(a,b){var c=a.requireModules,f=!1;if(b)b(a);else if(v(c,function(b){if(b=m(h,b))b.error=a,b.events.error&&(f=!0,b.emit("error",a))}),!f)g.onError(a)}function x(){R.length&&(ha.apply(A,[A.length,0].concat(R)),R=[])}function y(a){delete h[a];delete V[a]}function F(a,b,c){var f=a.map.id;a.error?a.emit("error",a.error):(b[f]=!0,v(a.depMaps,function(f, |
||||||
|
d){var e=f.id,g=m(h,e);g&&(!a.depMatched[d]&&!c[e])&&(m(b,e)?(a.defineDep(d,r[e]),a.check()):F(g,b,c))}),c[f]=!0)}function D(){var a,b,c=(a=1E3*j.waitSeconds)&&i.startTime+a<(new Date).getTime(),f=[],l=[],g=!1,h=!0;if(!W){W=!0;B(V,function(a){var i=a.map,j=i.id;if(a.enabled&&(i.isDefine||l.push(a),!a.error))if(!a.inited&&c)e(j)?g=b=!0:(f.push(j),d(j));else if(!a.inited&&(a.fetched&&i.isDefine)&&(g=!0,!i.prefix))return h=!1});if(c&&f.length)return a=C("timeout","Load timeout for modules: "+f,null, |
||||||
|
f),a.contextName=i.contextName,w(a);h&&v(l,function(a){F(a,{},{})});if((!c||b)&&g)if((z||ea)&&!X)X=setTimeout(function(){X=0;D()},50);W=!1}}function E(a){t(r,a[0])||s(p(a[0],null,!0)).init(a[1],a[2])}function I(a){var a=a.currentTarget||a.srcElement,b=i.onScriptLoad;a.detachEvent&&!Y?a.detachEvent("onreadystatechange",b):a.removeEventListener("load",b,!1);b=i.onScriptError;(!a.detachEvent||Y)&&a.removeEventListener("error",b,!1);return{node:a,id:a&&a.getAttribute("data-requiremodule")}}function J(){var a; |
||||||
|
for(x();A.length;){a=A.shift();if(null===a[0])return w(C("mismatch","Mismatched anonymous define() module: "+a[a.length-1]));E(a)}}var W,Z,i,L,X,j={waitSeconds:7,baseUrl:"./",paths:{},bundles:{},pkgs:{},shim:{},config:{}},h={},V={},$={},A=[],r={},S={},aa={},K=1,O=1;L={require:function(a){return a.require?a.require:a.require=i.makeRequire(a.map)},exports:function(a){a.usingExports=!0;if(a.map.isDefine)return a.exports?r[a.map.id]=a.exports:a.exports=r[a.map.id]={}},module:function(a){return a.module? |
||||||
|
a.module:a.module={id:a.map.id,uri:a.map.url,config:function(){return m(j.config,a.map.id)||{}},exports:a.exports||(a.exports={})}}};Z=function(a){this.events=m($,a.id)||{};this.map=a;this.shim=m(j.shim,a.id);this.depExports=[];this.depMaps=[];this.depMatched=[];this.pluginMaps={};this.depCount=0};Z.prototype={init:function(a,b,c,f){f=f||{};if(!this.inited){this.factory=b;if(c)this.on("error",c);else this.events.error&&(c=u(this,function(a){this.emit("error",a)}));this.depMaps=a&&a.slice(0);this.errback= |
||||||
|
c;this.inited=!0;this.ignore=f.ignore;f.enabled||this.enabled?this.enable():this.check()}},defineDep:function(a,b){this.depMatched[a]||(this.depMatched[a]=!0,this.depCount-=1,this.depExports[a]=b)},fetch:function(){if(!this.fetched){this.fetched=!0;i.startTime=(new Date).getTime();var a=this.map;if(this.shim)i.makeRequire(this.map,{enableBuildCallback:!0})(this.shim.deps||[],u(this,function(){return a.prefix?this.callPlugin():this.load()}));else return a.prefix?this.callPlugin():this.load()}},load:function(){var a= |
||||||
|
this.map.url;S[a]||(S[a]=!0,i.load(this.map.id,a))},check:function(){if(this.enabled&&!this.enabling){var a,b,c=this.map.id;b=this.depExports;var f=this.exports,l=this.factory;if(this.inited)if(this.error)this.emit("error",this.error);else{if(!this.defining){this.defining=!0;if(1>this.depCount&&!this.defined){if(G(l)){if(this.events.error&&this.map.isDefine||g.onError!==ca)try{f=i.execCb(c,l,b,f)}catch(d){a=d}else f=i.execCb(c,l,b,f);this.map.isDefine&&void 0===f&&((b=this.module)?f=b.exports:this.usingExports&& |
||||||
|
(f=this.exports));if(a)return a.requireMap=this.map,a.requireModules=this.map.isDefine?[this.map.id]:null,a.requireType=this.map.isDefine?"define":"require",w(this.error=a)}else f=l;this.exports=f;if(this.map.isDefine&&!this.ignore&&(r[c]=f,g.onResourceLoad))g.onResourceLoad(i,this.map,this.depMaps);y(c);this.defined=!0}this.defining=!1;this.defined&&!this.defineEmitted&&(this.defineEmitted=!0,this.emit("defined",this.exports),this.defineEmitComplete=!0)}}else this.fetch()}},callPlugin:function(){var a= |
||||||
|
this.map,b=a.id,d=p(a.prefix);this.depMaps.push(d);q(d,"defined",u(this,function(f){var l,d;d=m(aa,this.map.id);var e=this.map.name,P=this.map.parentMap?this.map.parentMap.name:null,n=i.makeRequire(a.parentMap,{enableBuildCallback:!0});if(this.map.unnormalized){if(f.normalize&&(e=f.normalize(e,function(a){return c(a,P,!0)})||""),f=p(a.prefix+"!"+e,this.map.parentMap),q(f,"defined",u(this,function(a){this.init([],function(){return a},null,{enabled:!0,ignore:!0})})),d=m(h,f.id)){this.depMaps.push(f); |
||||||
|
if(this.events.error)d.on("error",u(this,function(a){this.emit("error",a)}));d.enable()}}else d?(this.map.url=i.nameToUrl(d),this.load()):(l=u(this,function(a){this.init([],function(){return a},null,{enabled:!0})}),l.error=u(this,function(a){this.inited=!0;this.error=a;a.requireModules=[b];B(h,function(a){0===a.map.id.indexOf(b+"_unnormalized")&&y(a.map.id)});w(a)}),l.fromText=u(this,function(f,c){var d=a.name,e=p(d),P=M;c&&(f=c);P&&(M=!1);s(e);t(j.config,b)&&(j.config[d]=j.config[b]);try{g.exec(f)}catch(h){return w(C("fromtexteval", |
||||||
|
"fromText eval for "+b+" failed: "+h,h,[b]))}P&&(M=!0);this.depMaps.push(e);i.completeLoad(d);n([d],l)}),f.load(a.name,n,l,j))}));i.enable(d,this);this.pluginMaps[d.id]=d},enable:function(){V[this.map.id]=this;this.enabling=this.enabled=!0;v(this.depMaps,u(this,function(a,b){var c,f;if("string"===typeof a){a=p(a,this.map.isDefine?this.map:this.map.parentMap,!1,!this.skipMap);this.depMaps[b]=a;if(c=m(L,a.id)){this.depExports[b]=c(this);return}this.depCount+=1;q(a,"defined",u(this,function(a){this.defineDep(b, |
||||||
|
a);this.check()}));this.errback?q(a,"error",u(this,this.errback)):this.events.error&&q(a,"error",u(this,function(a){this.emit("error",a)}))}c=a.id;f=h[c];!t(L,c)&&(f&&!f.enabled)&&i.enable(a,this)}));B(this.pluginMaps,u(this,function(a){var b=m(h,a.id);b&&!b.enabled&&i.enable(a,this)}));this.enabling=!1;this.check()},on:function(a,b){var c=this.events[a];c||(c=this.events[a]=[]);c.push(b)},emit:function(a,b){v(this.events[a],function(a){a(b)});"error"===a&&delete this.events[a]}};i={config:j,contextName:b, |
||||||
|
registry:h,defined:r,urlFetched:S,defQueue:A,Module:Z,makeModuleMap:p,nextTick:g.nextTick,onError:w,configure:function(a){a.baseUrl&&"/"!==a.baseUrl.charAt(a.baseUrl.length-1)&&(a.baseUrl+="/");var b=j.shim,c={paths:!0,bundles:!0,config:!0,map:!0};B(a,function(a,b){c[b]?(j[b]||(j[b]={}),U(j[b],a,!0,!0)):j[b]=a});a.bundles&&B(a.bundles,function(a,b){v(a,function(a){a!==b&&(aa[a]=b)})});a.shim&&(B(a.shim,function(a,c){H(a)&&(a={deps:a});if((a.exports||a.init)&&!a.exportsFn)a.exportsFn=i.makeShimExports(a); |
||||||
|
b[c]=a}),j.shim=b);a.packages&&v(a.packages,function(a){var b,a="string"===typeof a?{name:a}:a;b=a.name;a.location&&(j.paths[b]=a.location);j.pkgs[b]=a.name+"/"+(a.main||"main").replace(ia,"").replace(Q,"")});B(h,function(a,b){!a.inited&&!a.map.unnormalized&&(a.map=p(b))});if(a.deps||a.callback)i.require(a.deps||[],a.callback)},makeShimExports:function(a){return function(){var b;a.init&&(b=a.init.apply(ba,arguments));return b||a.exports&&da(a.exports)}},makeRequire:function(a,e){function j(c,d,m){var n, |
||||||
|
q;e.enableBuildCallback&&(d&&G(d))&&(d.__requireJsBuild=!0);if("string"===typeof c){if(G(d))return w(C("requireargs","Invalid require call"),m);if(a&&t(L,c))return L[c](h[a.id]);if(g.get)return g.get(i,c,a,j);n=p(c,a,!1,!0);n=n.id;return!t(r,n)?w(C("notloaded",'Module name "'+n+'" has not been loaded yet for context: '+b+(a?"":". Use require([])"))):r[n]}J();i.nextTick(function(){J();q=s(p(null,a));q.skipMap=e.skipMap;q.init(c,d,m,{enabled:!0});D()});return j}e=e||{};U(j,{isBrowser:z,toUrl:function(b){var d, |
||||||
|
e=b.lastIndexOf("."),k=b.split("/")[0];if(-1!==e&&(!("."===k||".."===k)||1<e))d=b.substring(e,b.length),b=b.substring(0,e);return i.nameToUrl(c(b,a&&a.id,!0),d,!0)},defined:function(b){return t(r,p(b,a,!1,!0).id)},specified:function(b){b=p(b,a,!1,!0).id;return t(r,b)||t(h,b)}});a||(j.undef=function(b){x();var c=p(b,a,!0),e=m(h,b);d(b);delete r[b];delete S[c.url];delete $[b];T(A,function(a,c){a[0]===b&&A.splice(c,1)});e&&(e.events.defined&&($[b]=e.events),y(b))});return j},enable:function(a){m(h,a.id)&& |
||||||
|
s(a).enable()},completeLoad:function(a){var b,c,d=m(j.shim,a)||{},g=d.exports;for(x();A.length;){c=A.shift();if(null===c[0]){c[0]=a;if(b)break;b=!0}else c[0]===a&&(b=!0);E(c)}c=m(h,a);if(!b&&!t(r,a)&&c&&!c.inited){if(j.enforceDefine&&(!g||!da(g)))return e(a)?void 0:w(C("nodefine","No define call for "+a,null,[a]));E([a,d.deps||[],d.exportsFn])}D()},nameToUrl:function(a,b,c){var d,e,h;(d=m(j.pkgs,a))&&(a=d);if(d=m(aa,a))return i.nameToUrl(d,b,c);if(g.jsExtRegExp.test(a))d=a+(b||"");else{d=j.paths; |
||||||
|
a=a.split("/");for(e=a.length;0<e;e-=1)if(h=a.slice(0,e).join("/"),h=m(d,h)){H(h)&&(h=h[0]);a.splice(0,e,h);break}d=a.join("/");d+=b||(/^data\:|\?/.test(d)||c?"":".js");d=("/"===d.charAt(0)||d.match(/^[\w\+\.\-]+:/)?"":j.baseUrl)+d}return j.urlArgs?d+((-1===d.indexOf("?")?"?":"&")+j.urlArgs):d},load:function(a,b){g.load(i,a,b)},execCb:function(a,b,c,d){return b.apply(d,c)},onScriptLoad:function(a){if("load"===a.type||ja.test((a.currentTarget||a.srcElement).readyState))N=null,a=I(a),i.completeLoad(a.id)}, |
||||||
|
onScriptError:function(a){var b=I(a);if(!e(b.id))return w(C("scripterror","Script error for: "+b.id,a,[b.id]))}};i.require=i.makeRequire();return i}var g,x,y,D,I,E,N,J,s,O,ka=/(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg,la=/[^.]\s*require\s*\(\s*["']([^'"\s]+)["']\s*\)/g,Q=/\.js$/,ia=/^\.\//;x=Object.prototype;var K=x.toString,fa=x.hasOwnProperty,ha=Array.prototype.splice,z=!!("undefined"!==typeof window&&"undefined"!==typeof navigator&&window.document),ea=!z&&"undefined"!==typeof importScripts,ja= |
||||||
|
z&&"PLAYSTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/,Y="undefined"!==typeof opera&&"[object Opera]"===opera.toString(),F={},q={},R=[],M=!1;if("undefined"===typeof define){if("undefined"!==typeof requirejs){if(G(requirejs))return;q=requirejs;requirejs=void 0}"undefined"!==typeof require&&!G(require)&&(q=require,require=void 0);g=requirejs=function(b,c,d,e){var n,p="_";!H(b)&&"string"!==typeof b&&(n=b,H(c)?(b=c,c=d,d=e):b=[]);n&&n.context&&(p=n.context);(e=m(F,p))||(e=F[p]=g.s.newContext(p)); |
||||||
|
n&&e.configure(n);return e.require(b,c,d)};g.config=function(b){return g(b)};g.nextTick="undefined"!==typeof setTimeout?function(b){setTimeout(b,4)}:function(b){b()};require||(require=g);g.version="2.1.16";g.jsExtRegExp=/^\/|:|\?|\.js$/;g.isBrowser=z;x=g.s={contexts:F,newContext:ga};g({});v(["toUrl","undef","defined","specified"],function(b){g[b]=function(){var c=F._;return c.require[b].apply(c,arguments)}});if(z&&(y=x.head=document.getElementsByTagName("head")[0],D=document.getElementsByTagName("base")[0]))y= |
||||||
|
x.head=D.parentNode;g.onError=ca;g.createNode=function(b){var c=b.xhtml?document.createElementNS("http://www.w3.org/1999/xhtml","html:script"):document.createElement("script");c.type=b.scriptType||"text/javascript";c.charset="utf-8";c.async=!0;return c};g.load=function(b,c,d){var e=b&&b.config||{};if(z)return e=g.createNode(e,c,d),e.setAttribute("data-requirecontext",b.contextName),e.setAttribute("data-requiremodule",c),e.attachEvent&&!(e.attachEvent.toString&&0>e.attachEvent.toString().indexOf("[native code"))&& |
||||||
|
!Y?(M=!0,e.attachEvent("onreadystatechange",b.onScriptLoad)):(e.addEventListener("load",b.onScriptLoad,!1),e.addEventListener("error",b.onScriptError,!1)),e.src=d,J=e,D?y.insertBefore(e,D):y.appendChild(e),J=null,e;if(ea)try{importScripts(d),b.completeLoad(c)}catch(m){b.onError(C("importscripts","importScripts failed for "+c+" at "+d,m,[c]))}};z&&!q.skipDataMain&&T(document.getElementsByTagName("script"),function(b){y||(y=b.parentNode);if(I=b.getAttribute("data-main"))return s=I,q.baseUrl||(E=s.split("/"), |
||||||
|
s=E.pop(),O=E.length?E.join("/")+"/":"./",q.baseUrl=O),s=s.replace(Q,""),g.jsExtRegExp.test(s)&&(s=I),q.deps=q.deps?q.deps.concat(s):[s],!0});define=function(b,c,d){var e,g;"string"!==typeof b&&(d=c,c=b,b=null);H(c)||(d=c,c=null);!c&&G(d)&&(c=[],d.length&&(d.toString().replace(ka,"").replace(la,function(b,d){c.push(d)}),c=(1===d.length?["require"]:["require","exports","module"]).concat(c)));if(M){if(!(e=J))N&&"interactive"===N.readyState||T(document.getElementsByTagName("script"),function(b){if("interactive"=== |
||||||
|
b.readyState)return N=b}),e=N;e&&(b||(b=e.getAttribute("data-requiremodule")),g=F[e.getAttribute("data-requirecontext")])}(g?g.defQueue:R).push([b,c,d])};define.amd={jQuery:!0};g.exec=function(b){return eval(b)};g(q)}})(this); |
@ -0,0 +1,4 @@ |
|||||||
|
<article> |
||||||
|
<h3><a href="{{location}}">{{title}}</a></h3> |
||||||
|
<p>{{summary}}</p> |
||||||
|
</article> |
@ -0,0 +1,92 @@ |
|||||||
|
require.config({ |
||||||
|
baseUrl: base_url + "/search/" |
||||||
|
}); |
||||||
|
|
||||||
|
require([ |
||||||
|
'mustache.min', |
||||||
|
'lunr.min', |
||||||
|
'text!search-results-template.mustache', |
||||||
|
'text!search_index.json', |
||||||
|
], function (Mustache, lunr, results_template, data) { |
||||||
|
"use strict"; |
||||||
|
|
||||||
|
function getSearchTerm() |
||||||
|
{ |
||||||
|
var sPageURL = window.location.search.substring(1); |
||||||
|
var sURLVariables = sPageURL.split('&'); |
||||||
|
for (var i = 0; i < sURLVariables.length; i++) |
||||||
|
{ |
||||||
|
var sParameterName = sURLVariables[i].split('='); |
||||||
|
if (sParameterName[0] == 'q') |
||||||
|
{ |
||||||
|
return decodeURIComponent(sParameterName[1].replace(/\+/g, '%20')); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
var index = lunr(function () { |
||||||
|
this.field('title', {boost: 10}); |
||||||
|
this.field('text'); |
||||||
|
this.ref('location'); |
||||||
|
}); |
||||||
|
|
||||||
|
data = JSON.parse(data); |
||||||
|
var documents = {}; |
||||||
|
|
||||||
|
for (var i=0; i < data.docs.length; i++){ |
||||||
|
var doc = data.docs[i]; |
||||||
|
doc.location = base_url + doc.location; |
||||||
|
index.add(doc); |
||||||
|
documents[doc.location] = doc; |
||||||
|
} |
||||||
|
|
||||||
|
var search = function(){ |
||||||
|
|
||||||
|
var query = document.getElementById('mkdocs-search-query').value; |
||||||
|
var search_results = document.getElementById("mkdocs-search-results"); |
||||||
|
while (search_results.firstChild) { |
||||||
|
search_results.removeChild(search_results.firstChild); |
||||||
|
} |
||||||
|
|
||||||
|
if(query === ''){ |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
var results = index.search(query); |
||||||
|
|
||||||
|
if (results.length > 0){ |
||||||
|
for (var i=0; i < results.length; i++){ |
||||||
|
var result = results[i]; |
||||||
|
doc = documents[result.ref]; |
||||||
|
doc.base_url = base_url; |
||||||
|
doc.summary = doc.text.substring(0, 200); |
||||||
|
var html = Mustache.to_html(results_template, doc); |
||||||
|
search_results.insertAdjacentHTML('beforeend', html); |
||||||
|
} |
||||||
|
} else { |
||||||
|
search_results.insertAdjacentHTML('beforeend', "<p>No results found</p>"); |
||||||
|
} |
||||||
|
|
||||||
|
if(jQuery){ |
||||||
|
/* |
||||||
|
* We currently only automatically hide bootstrap models. This |
||||||
|
* requires jQuery to work. |
||||||
|
*/ |
||||||
|
jQuery('#mkdocs_search_modal a').click(function(){ |
||||||
|
jQuery('#mkdocs_search_modal').modal('hide'); |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
}; |
||||||
|
|
||||||
|
var search_input = document.getElementById('mkdocs-search-query'); |
||||||
|
|
||||||
|
var term = getSearchTerm(); |
||||||
|
if (term){ |
||||||
|
search_input.value = term; |
||||||
|
search(); |
||||||
|
} |
||||||
|
|
||||||
|
if (search_input){search_input.addEventListener("keyup", search);} |
||||||
|
|
||||||
|
}); |
File diff suppressed because one or more lines are too long
@ -0,0 +1,390 @@ |
|||||||
|
/** |
||||||
|
* @license RequireJS text 2.0.12 Copyright (c) 2010-2014, The Dojo Foundation All Rights Reserved. |
||||||
|
* Available via the MIT or new BSD license. |
||||||
|
* see: http://github.com/requirejs/text for details
|
||||||
|
*/ |
||||||
|
/*jslint regexp: true */ |
||||||
|
/*global require, XMLHttpRequest, ActiveXObject, |
||||||
|
define, window, process, Packages, |
||||||
|
java, location, Components, FileUtils */ |
||||||
|
|
||||||
|
define(['module'], function (module) { |
||||||
|
'use strict'; |
||||||
|
|
||||||
|
var text, fs, Cc, Ci, xpcIsWindows, |
||||||
|
progIds = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'], |
||||||
|
xmlRegExp = /^\s*<\?xml(\s)+version=[\'\"](\d)*.(\d)*[\'\"](\s)*\?>/im, |
||||||
|
bodyRegExp = /<body[^>]*>\s*([\s\S]+)\s*<\/body>/im, |
||||||
|
hasLocation = typeof location !== 'undefined' && location.href, |
||||||
|
defaultProtocol = hasLocation && location.protocol && location.protocol.replace(/\:/, ''), |
||||||
|
defaultHostName = hasLocation && location.hostname, |
||||||
|
defaultPort = hasLocation && (location.port || undefined), |
||||||
|
buildMap = {}, |
||||||
|
masterConfig = (module.config && module.config()) || {}; |
||||||
|
|
||||||
|
text = { |
||||||
|
version: '2.0.12', |
||||||
|
|
||||||
|
strip: function (content) { |
||||||
|
//Strips <?xml ...?> declarations so that external SVG and XML
|
||||||
|
//documents can be added to a document without worry. Also, if the string
|
||||||
|
//is an HTML document, only the part inside the body tag is returned.
|
||||||
|
if (content) { |
||||||
|
content = content.replace(xmlRegExp, ""); |
||||||
|
var matches = content.match(bodyRegExp); |
||||||
|
if (matches) { |
||||||
|
content = matches[1]; |
||||||
|
} |
||||||
|
} else { |
||||||
|
content = ""; |
||||||
|
} |
||||||
|
return content; |
||||||
|
}, |
||||||
|
|
||||||
|
jsEscape: function (content) { |
||||||
|
return content.replace(/(['\\])/g, '\\$1') |
||||||
|
.replace(/[\f]/g, "\\f") |
||||||
|
.replace(/[\b]/g, "\\b") |
||||||
|
.replace(/[\n]/g, "\\n") |
||||||
|
.replace(/[\t]/g, "\\t") |
||||||
|
.replace(/[\r]/g, "\\r") |
||||||
|
.replace(/[\u2028]/g, "\\u2028") |
||||||
|
.replace(/[\u2029]/g, "\\u2029"); |
||||||
|
}, |
||||||
|
|
||||||
|
createXhr: masterConfig.createXhr || function () { |
||||||
|
//Would love to dump the ActiveX crap in here. Need IE 6 to die first.
|
||||||
|
var xhr, i, progId; |
||||||
|
if (typeof XMLHttpRequest !== "undefined") { |
||||||
|
return new XMLHttpRequest(); |
||||||
|
} else if (typeof ActiveXObject !== "undefined") { |
||||||
|
for (i = 0; i < 3; i += 1) { |
||||||
|
progId = progIds[i]; |
||||||
|
try { |
||||||
|
xhr = new ActiveXObject(progId); |
||||||
|
} catch (e) {} |
||||||
|
|
||||||
|
if (xhr) { |
||||||
|
progIds = [progId]; // so faster next time
|
||||||
|
break; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return xhr; |
||||||
|
}, |
||||||
|
|
||||||
|
/** |
||||||
|
* Parses a resource name into its component parts. Resource names |
||||||
|
* look like: module/name.ext!strip, where the !strip part is |
||||||
|
* optional. |
||||||
|
* @param {String} name the resource name |
||||||
|
* @returns {Object} with properties "moduleName", "ext" and "strip" |
||||||
|
* where strip is a boolean. |
||||||
|
*/ |
||||||
|
parseName: function (name) { |
||||||
|
var modName, ext, temp, |
||||||
|
strip = false, |
||||||
|
index = name.indexOf("."), |
||||||
|
isRelative = name.indexOf('./') === 0 || |
||||||
|
name.indexOf('../') === 0; |
||||||
|
|
||||||
|
if (index !== -1 && (!isRelative || index > 1)) { |
||||||
|
modName = name.substring(0, index); |
||||||
|
ext = name.substring(index + 1, name.length); |
||||||
|
} else { |
||||||
|
modName = name; |
||||||
|
} |
||||||
|
|
||||||
|
temp = ext || modName; |
||||||
|
index = temp.indexOf("!"); |
||||||
|
if (index !== -1) { |
||||||
|
//Pull off the strip arg.
|
||||||
|
strip = temp.substring(index + 1) === "strip"; |
||||||
|
temp = temp.substring(0, index); |
||||||
|
if (ext) { |
||||||
|
ext = temp; |
||||||
|
} else { |
||||||
|
modName = temp; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return { |
||||||
|
moduleName: modName, |
||||||
|
ext: ext, |
||||||
|
strip: strip |
||||||
|
}; |
||||||
|
}, |
||||||
|
|
||||||
|
xdRegExp: /^((\w+)\:)?\/\/([^\/\\]+)/, |
||||||
|
|
||||||
|
/** |
||||||
|
* Is an URL on another domain. Only works for browser use, returns |
||||||
|
* false in non-browser environments. Only used to know if an |
||||||
|
* optimized .js version of a text resource should be loaded |
||||||
|
* instead. |
||||||
|
* @param {String} url |
||||||
|
* @returns Boolean |
||||||
|
*/ |
||||||
|
useXhr: function (url, protocol, hostname, port) { |
||||||
|
var uProtocol, uHostName, uPort, |
||||||
|
match = text.xdRegExp.exec(url); |
||||||
|
if (!match) { |
||||||
|
return true; |
||||||
|
} |
||||||
|
uProtocol = match[2]; |
||||||
|
uHostName = match[3]; |
||||||
|
|
||||||
|
uHostName = uHostName.split(':'); |
||||||
|
uPort = uHostName[1]; |
||||||
|
uHostName = uHostName[0]; |
||||||
|
|
||||||
|
return (!uProtocol || uProtocol === protocol) && |
||||||
|
(!uHostName || uHostName.toLowerCase() === hostname.toLowerCase()) && |
||||||
|
((!uPort && !uHostName) || uPort === port); |
||||||
|
}, |
||||||
|
|
||||||
|
finishLoad: function (name, strip, content, onLoad) { |
||||||
|
content = strip ? text.strip(content) : content; |
||||||
|
if (masterConfig.isBuild) { |
||||||
|
buildMap[name] = content; |
||||||
|
} |
||||||
|
onLoad(content); |
||||||
|
}, |
||||||
|
|
||||||
|
load: function (name, req, onLoad, config) { |
||||||
|
//Name has format: some.module.filext!strip
|
||||||
|
//The strip part is optional.
|
||||||
|
//if strip is present, then that means only get the string contents
|
||||||
|
//inside a body tag in an HTML string. For XML/SVG content it means
|
||||||
|
//removing the <?xml ...?> declarations so the content can be inserted
|
||||||
|
//into the current doc without problems.
|
||||||
|
|
||||||
|
// Do not bother with the work if a build and text will
|
||||||
|
// not be inlined.
|
||||||
|
if (config && config.isBuild && !config.inlineText) { |
||||||
|
onLoad(); |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
masterConfig.isBuild = config && config.isBuild; |
||||||
|
|
||||||
|
var parsed = text.parseName(name), |
||||||
|
nonStripName = parsed.moduleName + |
||||||
|
(parsed.ext ? '.' + parsed.ext : ''), |
||||||
|
url = req.toUrl(nonStripName), |
||||||
|
useXhr = (masterConfig.useXhr) || |
||||||
|
text.useXhr; |
||||||
|
|
||||||
|
// Do not load if it is an empty: url
|
||||||
|
if (url.indexOf('empty:') === 0) { |
||||||
|
onLoad(); |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
//Load the text. Use XHR if possible and in a browser.
|
||||||
|
if (!hasLocation || useXhr(url, defaultProtocol, defaultHostName, defaultPort)) { |
||||||
|
text.get(url, function (content) { |
||||||
|
text.finishLoad(name, parsed.strip, content, onLoad); |
||||||
|
}, function (err) { |
||||||
|
if (onLoad.error) { |
||||||
|
onLoad.error(err); |
||||||
|
} |
||||||
|
}); |
||||||
|
} else { |
||||||
|
//Need to fetch the resource across domains. Assume
|
||||||
|
//the resource has been optimized into a JS module. Fetch
|
||||||
|
//by the module name + extension, but do not include the
|
||||||
|
//!strip part to avoid file system issues.
|
||||||
|
req([nonStripName], function (content) { |
||||||
|
text.finishLoad(parsed.moduleName + '.' + parsed.ext, |
||||||
|
parsed.strip, content, onLoad); |
||||||
|
}); |
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
|
write: function (pluginName, moduleName, write, config) { |
||||||
|
if (buildMap.hasOwnProperty(moduleName)) { |
||||||
|
var content = text.jsEscape(buildMap[moduleName]); |
||||||
|
write.asModule(pluginName + "!" + moduleName, |
||||||
|
"define(function () { return '" + |
||||||
|
content + |
||||||
|
"';});\n"); |
||||||
|
} |
||||||
|
}, |
||||||
|
|
||||||
|
writeFile: function (pluginName, moduleName, req, write, config) { |
||||||
|
var parsed = text.parseName(moduleName), |
||||||
|
extPart = parsed.ext ? '.' + parsed.ext : '', |
||||||
|
nonStripName = parsed.moduleName + extPart, |
||||||
|
//Use a '.js' file name so that it indicates it is a
|
||||||
|
//script that can be loaded across domains.
|
||||||
|
fileName = req.toUrl(parsed.moduleName + extPart) + '.js'; |
||||||
|
|
||||||
|
//Leverage own load() method to load plugin value, but only
|
||||||
|
//write out values that do not have the strip argument,
|
||||||
|
//to avoid any potential issues with ! in file names.
|
||||||
|
text.load(nonStripName, req, function (value) { |
||||||
|
//Use own write() method to construct full module value.
|
||||||
|
//But need to create shell that translates writeFile's
|
||||||
|
//write() to the right interface.
|
||||||
|
var textWrite = function (contents) { |
||||||
|
return write(fileName, contents); |
||||||
|
}; |
||||||
|
textWrite.asModule = function (moduleName, contents) { |
||||||
|
return write.asModule(moduleName, fileName, contents); |
||||||
|
}; |
||||||
|
|
||||||
|
text.write(pluginName, nonStripName, textWrite, config); |
||||||
|
}, config); |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
if (masterConfig.env === 'node' || (!masterConfig.env && |
||||||
|
typeof process !== "undefined" && |
||||||
|
process.versions && |
||||||
|
!!process.versions.node && |
||||||
|
!process.versions['node-webkit'])) { |
||||||
|
//Using special require.nodeRequire, something added by r.js.
|
||||||
|
fs = require.nodeRequire('fs'); |
||||||
|
|
||||||
|
text.get = function (url, callback, errback) { |
||||||
|
try { |
||||||
|
var file = fs.readFileSync(url, 'utf8'); |
||||||
|
//Remove BOM (Byte Mark Order) from utf8 files if it is there.
|
||||||
|
if (file.indexOf('\uFEFF') === 0) { |
||||||
|
file = file.substring(1); |
||||||
|
} |
||||||
|
callback(file); |
||||||
|
} catch (e) { |
||||||
|
if (errback) { |
||||||
|
errback(e); |
||||||
|
} |
||||||
|
} |
||||||
|
}; |
||||||
|
} else if (masterConfig.env === 'xhr' || (!masterConfig.env && |
||||||
|
text.createXhr())) { |
||||||
|
text.get = function (url, callback, errback, headers) { |
||||||
|
var xhr = text.createXhr(), header; |
||||||
|
xhr.open('GET', url, true); |
||||||
|
|
||||||
|
//Allow plugins direct access to xhr headers
|
||||||
|
if (headers) { |
||||||
|
for (header in headers) { |
||||||
|
if (headers.hasOwnProperty(header)) { |
||||||
|
xhr.setRequestHeader(header.toLowerCase(), headers[header]); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
//Allow overrides specified in config
|
||||||
|
if (masterConfig.onXhr) { |
||||||
|
masterConfig.onXhr(xhr, url); |
||||||
|
} |
||||||
|
|
||||||
|
xhr.onreadystatechange = function (evt) { |
||||||
|
var status, err; |
||||||
|
//Do not explicitly handle errors, those should be
|
||||||
|
//visible via console output in the browser.
|
||||||
|
if (xhr.readyState === 4) { |
||||||
|
status = xhr.status || 0; |
||||||
|
if (status > 399 && status < 600) { |
||||||
|
//An http 4xx or 5xx error. Signal an error.
|
||||||
|
err = new Error(url + ' HTTP status: ' + status); |
||||||
|
err.xhr = xhr; |
||||||
|
if (errback) { |
||||||
|
errback(err); |
||||||
|
} |
||||||
|
} else { |
||||||
|
callback(xhr.responseText); |
||||||
|
} |
||||||
|
|
||||||
|
if (masterConfig.onXhrComplete) { |
||||||
|
masterConfig.onXhrComplete(xhr, url); |
||||||
|
} |
||||||
|
} |
||||||
|
}; |
||||||
|
xhr.send(null); |
||||||
|
}; |
||||||
|
} else if (masterConfig.env === 'rhino' || (!masterConfig.env && |
||||||
|
typeof Packages !== 'undefined' && typeof java !== 'undefined')) { |
||||||
|
//Why Java, why is this so awkward?
|
||||||
|
text.get = function (url, callback) { |
||||||
|
var stringBuffer, line, |
||||||
|
encoding = "utf-8", |
||||||
|
file = new java.io.File(url), |
||||||
|
lineSeparator = java.lang.System.getProperty("line.separator"), |
||||||
|
input = new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(file), encoding)), |
||||||
|
content = ''; |
||||||
|
try { |
||||||
|
stringBuffer = new java.lang.StringBuffer(); |
||||||
|
line = input.readLine(); |
||||||
|
|
||||||
|
// Byte Order Mark (BOM) - The Unicode Standard, version 3.0, page 324
|
||||||
|
// http://www.unicode.org/faq/utf_bom.html
|
||||||
|
|
||||||
|
// Note that when we use utf-8, the BOM should appear as "EF BB BF", but it doesn't due to this bug in the JDK:
|
||||||
|
// http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4508058
|
||||||
|
if (line && line.length() && line.charAt(0) === 0xfeff) { |
||||||
|
// Eat the BOM, since we've already found the encoding on this file,
|
||||||
|
// and we plan to concatenating this buffer with others; the BOM should
|
||||||
|
// only appear at the top of a file.
|
||||||
|
line = line.substring(1); |
||||||
|
} |
||||||
|
|
||||||
|
if (line !== null) { |
||||||
|
stringBuffer.append(line); |
||||||
|
} |
||||||
|
|
||||||
|
while ((line = input.readLine()) !== null) { |
||||||
|
stringBuffer.append(lineSeparator); |
||||||
|
stringBuffer.append(line); |
||||||
|
} |
||||||
|
//Make sure we return a JavaScript string and not a Java string.
|
||||||
|
content = String(stringBuffer.toString()); //String
|
||||||
|
} finally { |
||||||
|
input.close(); |
||||||
|
} |
||||||
|
callback(content); |
||||||
|
}; |
||||||
|
} else if (masterConfig.env === 'xpconnect' || (!masterConfig.env && |
||||||
|
typeof Components !== 'undefined' && Components.classes && |
||||||
|
Components.interfaces)) { |
||||||
|
//Avert your gaze!
|
||||||
|
Cc = Components.classes; |
||||||
|
Ci = Components.interfaces; |
||||||
|
Components.utils['import']('resource://gre/modules/FileUtils.jsm'); |
||||||
|
xpcIsWindows = ('@mozilla.org/windows-registry-key;1' in Cc); |
||||||
|
|
||||||
|
text.get = function (url, callback) { |
||||||
|
var inStream, convertStream, fileObj, |
||||||
|
readData = {}; |
||||||
|
|
||||||
|
if (xpcIsWindows) { |
||||||
|
url = url.replace(/\//g, '\\'); |
||||||
|
} |
||||||
|
|
||||||
|
fileObj = new FileUtils.File(url); |
||||||
|
|
||||||
|
//XPCOM, you so crazy
|
||||||
|
try { |
||||||
|
inStream = Cc['@mozilla.org/network/file-input-stream;1'] |
||||||
|
.createInstance(Ci.nsIFileInputStream); |
||||||
|
inStream.init(fileObj, 1, 0, false); |
||||||
|
|
||||||
|
convertStream = Cc['@mozilla.org/intl/converter-input-stream;1'] |
||||||
|
.createInstance(Ci.nsIConverterInputStream); |
||||||
|
convertStream.init(inStream, "utf-8", inStream.available(), |
||||||
|
Ci.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER); |
||||||
|
|
||||||
|
convertStream.readString(inStream.available(), readData); |
||||||
|
convertStream.close(); |
||||||
|
inStream.close(); |
||||||
|
callback(readData.value); |
||||||
|
} catch (e) { |
||||||
|
throw new Error((fileObj && fileObj.path || '') + ': ' + e); |
||||||
|
} |
||||||
|
}; |
||||||
|
} |
||||||
|
return text; |
||||||
|
}); |
@ -0,0 +1,76 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> |
||||||
|
|
||||||
|
|
||||||
|
<url> |
||||||
|
<loc>/</loc> |
||||||
|
<lastmod>2018-04-23</lastmod> |
||||||
|
<changefreq>daily</changefreq> |
||||||
|
</url> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<url> |
||||||
|
<loc>/boot2root/</loc> |
||||||
|
<lastmod>2018-04-23</lastmod> |
||||||
|
<changefreq>daily</changefreq> |
||||||
|
</url> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<url> |
||||||
|
<loc>/faq/</loc> |
||||||
|
<lastmod>2018-04-23</lastmod> |
||||||
|
<changefreq>daily</changefreq> |
||||||
|
</url> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<url> |
||||||
|
<loc>/locked-out/</loc> |
||||||
|
<lastmod>2018-04-23</lastmod> |
||||||
|
<changefreq>daily</changefreq> |
||||||
|
</url> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<url> |
||||||
|
<loc>/smallmelo-migration-1/</loc> |
||||||
|
<lastmod>2018-04-23</lastmod> |
||||||
|
<changefreq>daily</changefreq> |
||||||
|
</url> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<url> |
||||||
|
<loc>/smallmelo-migration-2/</loc> |
||||||
|
<lastmod>2018-04-23</lastmod> |
||||||
|
<changefreq>daily</changefreq> |
||||||
|
</url> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<url> |
||||||
|
<loc>/smallmelo-migration-3/</loc> |
||||||
|
<lastmod>2018-04-23</lastmod> |
||||||
|
<changefreq>daily</changefreq> |
||||||
|
</url> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<url> |
||||||
|
<loc>/wisko-gitea/</loc> |
||||||
|
<lastmod>2018-04-23</lastmod> |
||||||
|
<changefreq>daily</changefreq> |
||||||
|
</url> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<url> |
||||||
|
<loc>/geoserver-https/</loc> |
||||||
|
<lastmod>2018-04-23</lastmod> |
||||||
|
<changefreq>daily</changefreq> |
||||||
|
</url> |
||||||
|
|
||||||
|
|
||||||
|
</urlset> |
@ -0,0 +1,579 @@ |
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!DOCTYPE html> |
||||||
|
<html lang="en" class="no-js"> |
||||||
|
<head> |
||||||
|
|
||||||
|
<meta charset="utf-8"> |
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1"> |
||||||
|
<meta http-equiv="x-ua-compatible" content="ie=edge"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="lang:clipboard.copy" content="Copy to clipboard"> |
||||||
|
|
||||||
|
<meta name="lang:clipboard.copied" content="Copied to clipboard"> |
||||||
|
|
||||||
|
<meta name="lang:search.language" content="en"> |
||||||
|
|
||||||
|
<meta name="lang:search.pipeline.stopwords" content="True"> |
||||||
|
|
||||||
|
<meta name="lang:search.pipeline.trimmer" content="True"> |
||||||
|
|
||||||
|
<meta name="lang:search.result.none" content="No matching documents"> |
||||||
|
|
||||||
|
<meta name="lang:search.result.one" content="1 matching document"> |
||||||
|
|
||||||
|
<meta name="lang:search.result.other" content="# matching documents"> |
||||||
|
|
||||||
|
<meta name="lang:search.tokenizer" content="[\s\-]+"> |
||||||
|
|
||||||
|
<link rel="shortcut icon" href="../"> |
||||||
|
<meta name="generator" content="mkdocs-0.17.3, mkdocs-material-2.7.2"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<title>smallmelo.com Migration: Part 1 - the wisko manual</title> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="../assets/stylesheets/application.8d40d89b.css"> |
||||||
|
|
||||||
|
<link rel="stylesheet" href="../assets/stylesheets/application-palette.6079476c.css"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script src="../assets/javascripts/modernizr.1aa3b519.js"></script> |
||||||
|
|
||||||
|
|
||||||
|
<link href="https://fonts.gstatic.com" rel="preconnect" crossorigin> |
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono"> |
||||||
|
<style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style> |
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"> |
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="../css/custom.css"> |
||||||
|
|
||||||
|
|
||||||
|
</head> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<body dir="ltr" data-md-color-primary="green" data-md-color-accent="green"> |
||||||
|
|
||||||
|
<svg class="md-svg"> |
||||||
|
<defs> |
||||||
|
|
||||||
|
|
||||||
|
</defs> |
||||||
|
</svg> |
||||||
|
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="drawer" autocomplete="off"> |
||||||
|
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="search" autocomplete="off"> |
||||||
|
<label class="md-overlay" data-md-component="overlay" for="drawer"></label> |
||||||
|
|
||||||
|
<a href="#smallmelocom-migration-part-1" tabindex="1" class="md-skip"> |
||||||
|
Skip to content |
||||||
|
</a> |
||||||
|
|
||||||
|
|
||||||
|
<header class="md-header" data-md-component="header"> |
||||||
|
<nav class="md-header-nav md-grid"> |
||||||
|
<div class="md-flex"> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
<a href=".." title="the wisko manual" class="md-header-nav__button md-logo"> |
||||||
|
|
||||||
|
<i class="md-icon">cloud</i> |
||||||
|
|
||||||
|
</a> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
<label class="md-icon md-icon--menu md-header-nav__button" for="drawer"></label> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--stretch"> |
||||||
|
<div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"> |
||||||
|
|
||||||
|
|
||||||
|
<span class="md-header-nav__topic"> |
||||||
|
the wisko manual |
||||||
|
</span> |
||||||
|
<span class="md-header-nav__topic"> |
||||||
|
smallmelo.com Migration: Part 1 |
||||||
|
</span> |
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
|
||||||
|
|
||||||
|
<label class="md-icon md-icon--search md-header-nav__button" for="search"></label> |
||||||
|
|
||||||
|
<div class="md-search" data-md-component="search" role="dialog"> |
||||||
|
<label class="md-search__overlay" for="search"></label> |
||||||
|
<div class="md-search__inner" role="search"> |
||||||
|
<form class="md-search__form" name="search"> |
||||||
|
<input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> |
||||||
|
<label class="md-icon md-search__icon" for="search"></label> |
||||||
|
<button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1"> |
||||||
|
 |
||||||
|
</button> |
||||||
|
</form> |
||||||
|
<div class="md-search__output"> |
||||||
|
<div class="md-search__scrollwrap" data-md-scrollfix> |
||||||
|
<div class="md-search-result" data-md-component="result"> |
||||||
|
<div class="md-search-result__meta"> |
||||||
|
Type to start searching |
||||||
|
</div> |
||||||
|
<ol class="md-search-result__list"></ol> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
</nav> |
||||||
|
</header> |
||||||
|
|
||||||
|
<div class="md-container"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<main class="md-main"> |
||||||
|
<div class="md-main__inner md-grid" data-md-component="container"> |
||||||
|
|
||||||
|
|
||||||
|
<div class="md-sidebar md-sidebar--primary" data-md-component="navigation"> |
||||||
|
<div class="md-sidebar__scrollwrap"> |
||||||
|
<div class="md-sidebar__inner"> |
||||||
|
<nav class="md-nav md-nav--primary" data-md-level="0"> |
||||||
|
<label class="md-nav__title md-nav__title--site" for="drawer"> |
||||||
|
<span class="md-nav__button md-logo"> |
||||||
|
|
||||||
|
<i class="md-icon">cloud</i> |
||||||
|
|
||||||
|
</span> |
||||||
|
the wisko manual |
||||||
|
</label> |
||||||
|
|
||||||
|
<ul class="md-nav__list" data-md-scrollfix> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href=".." title="Index" class="md-nav__link"> |
||||||
|
Index |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../boot2root/" title="Wisko Boot to Root" class="md-nav__link"> |
||||||
|
Wisko Boot to Root |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../faq/" title="Wisko FAQ" class="md-nav__link"> |
||||||
|
Wisko FAQ |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../locked-out/" title="Locked Out of Wisko" class="md-nav__link"> |
||||||
|
Locked Out of Wisko |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item md-nav__item--active"> |
||||||
|
|
||||||
|
<input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="toc"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<label class="md-nav__link md-nav__link--active" for="toc"> |
||||||
|
smallmelo.com Migration: Part 1 |
||||||
|
</label> |
||||||
|
|
||||||
|
<a href="./" title="smallmelo.com Migration: Part 1" class="md-nav__link md-nav__link--active"> |
||||||
|
smallmelo.com Migration: Part 1 |
||||||
|
</a> |
||||||
|
|
||||||
|
|
||||||
|
<nav class="md-nav md-nav--secondary"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<label class="md-nav__title" for="toc">Table of contents</label> |
||||||
|
<ul class="md-nav__list" data-md-scrollfix> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#copy-public-ssh-key-to-wisko" title="copy public ssh key to wisko" class="md-nav__link"> |
||||||
|
copy public ssh key to wisko |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#changing-the-folder-structure-of-my-wordpress-site" title="changing the folder structure of my wordpress site" class="md-nav__link"> |
||||||
|
changing the folder structure of my wordpress site |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</ul> |
||||||
|
|
||||||
|
</nav> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../smallmelo-migration-2/" title="smallmelo.com Migration: Part 2" class="md-nav__link"> |
||||||
|
smallmelo.com Migration: Part 2 |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../smallmelo-migration-3/" title="smallmelo.com Migration: Part 3" class="md-nav__link"> |
||||||
|
smallmelo.com Migration: Part 3 |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../wisko-gitea/" title="Wisko Gitea" class="md-nav__link"> |
||||||
|
Wisko Gitea |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../geoserver-https/" title="Connecting to Geoserver Over HTTPS" class="md-nav__link"> |
||||||
|
Connecting to Geoserver Over HTTPS |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
</ul> |
||||||
|
</nav> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
<div class="md-sidebar md-sidebar--secondary" data-md-component="toc"> |
||||||
|
<div class="md-sidebar__scrollwrap"> |
||||||
|
<div class="md-sidebar__inner"> |
||||||
|
|
||||||
|
<nav class="md-nav md-nav--secondary"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<label class="md-nav__title" for="toc">Table of contents</label> |
||||||
|
<ul class="md-nav__list" data-md-scrollfix> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#copy-public-ssh-key-to-wisko" title="copy public ssh key to wisko" class="md-nav__link"> |
||||||
|
copy public ssh key to wisko |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#changing-the-folder-structure-of-my-wordpress-site" title="changing the folder structure of my wordpress site" class="md-nav__link"> |
||||||
|
changing the folder structure of my wordpress site |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</ul> |
||||||
|
|
||||||
|
</nav> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
<div class="md-content"> |
||||||
|
<article class="md-content__inner md-typeset"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h1 id="smallmelocom-migration-part-1">smallmelo.com migration part 1</h1> |
||||||
|
<h2 id="copy-public-ssh-key-to-wisko">copy public ssh key to wisko</h2> |
||||||
|
<p>get public ssh key from local machine</p> |
||||||
|
<pre><code>cat ~/.ssh/id_rsa.pub |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>copy that log into wisko in seperate termibal window</p> |
||||||
|
<pre><code>nano .ssh/authorized_keys |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>paste in then exit</p> |
||||||
|
<h2 id="changing-the-folder-structure-of-my-wordpress-site">changing the folder structure of my wordpress site</h2> |
||||||
|
<p>used <a href="https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-14-04-lts">this site</a> to setup the folders the way i wanted them. </p> |
||||||
|
<p>lots of nano-ing and reviewing later, ready to start making changes.</p> |
||||||
|
<pre><code>cd /var/www |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>make directory</p> |
||||||
|
<pre><code>sudo mkdir -p /var/www/allthehatsformaps.com/public_html |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>grant myself permission to access</p> |
||||||
|
<pre><code>sudo chown -R $USER:$USER /var/www/allthehatsformaps.com/public_html |
||||||
|
|
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>create example page</p> |
||||||
|
<pre><code>nano /var/www/allthehatsformaps.com/public_html/index.html |
||||||
|
|
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>ugh, do some renaming</p> |
||||||
|
<pre><code>sudo mv allthehatsformaps.com allthehatsformaps |
||||||
|
sudo chown -R $USER:$USER /var/www/allthehatsformaps/public_html |
||||||
|
|
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>add my html content accordingly, then make a copy of the conf file</p> |
||||||
|
<pre><code>sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/allthehatsformaps.conf |
||||||
|
|
||||||
|
nano allthehatsformaps.conf |
||||||
|
|
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>grant permissions</p> |
||||||
|
<pre><code>sudo chown -R $USER:$USER /etc/apache2/sites-available/allthehatsformaps.conf |
||||||
|
|
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>edited my new config file</p> |
||||||
|
<pre><code>ServerName allthehatsformaps.com |
||||||
|
ServerAlias www.allthehatsformaps.com |
||||||
|
ServerAdmin melo@allthehatsformaps.com |
||||||
|
DocumentRoot /var/www/allthehatsformaps/public_html |
||||||
|
|
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>disable charles' site & enable my new one</p> |
||||||
|
<pre><code>sudo a2dissite 000-default.conf |
||||||
|
sudo a2ensite allthehatsformaps.conf |
||||||
|
service apache2 reload |
||||||
|
|
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>copy wordpress folder from htdocs to my new folder </p> |
||||||
|
<pre><code>sudo mv /var/www/htdocs/wordpress /var/www/allthehatsformaps/public_html |
||||||
|
|
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>oops... that moved the entire folder, i just wanted to move its contents. </p> |
||||||
|
<pre><code>cd /var/www/allthehatsformaps/public_html |
||||||
|
sudo mv wordpress/* . |
||||||
|
rmdir wordpress |
||||||
|
rm index.html |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>going to allthehatsformaps.com works</p> |
||||||
|
<p>going to allthehatsformaps.com/wp-admin tries to redirect to http://159.65.75.41/wordpress/wp-login.php?redirect_to=http%3A%2F%2Fallthehatsformaps.com%2Fwp-admin%2F&reauth=1 and throws a 404 error</p> |
||||||
|
<p>went instead to: |
||||||
|
http://159.65.75.41/wp-login.php</p> |
||||||
|
<p>copy back the wordpress folder into htdocs</p> |
||||||
|
<pre><code>sudo cp /var/www/allthehatsformaps/public_html/* /var/www/htdocs/wordpress |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>disable my site config and enable old one</p> |
||||||
|
<pre><code>sudo a2dissite allthehatsformaps.conf |
||||||
|
sudo a2ensite 000-default.conf |
||||||
|
service apache2 reload |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>went to the wordpress login and signed in |
||||||
|
under settings removed "wordpress" subfolder from the site url</p> |
||||||
|
<p>disable charles' site & enable my new one</p> |
||||||
|
<pre><code>sudo a2dissite 000-default.conf |
||||||
|
sudo a2ensite allthehatsformaps.conf |
||||||
|
service apache2 reload |
||||||
|
|
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>logged back into wordpress and changed the url to: http://allthehatsformaps.com</p> |
||||||
|
<p>removed the old wordpress folder in htdocs:</p> |
||||||
|
<pre><code>sudo rm -r wordpress |
||||||
|
|
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>cd back into the new wordpress and added a .htaccess file with the following:</p> |
||||||
|
<pre><code><IfModule mod_rewrite.c> |
||||||
|
RewriteEngine On |
||||||
|
RewriteBase / |
||||||
|
RewriteRule ^index\.php$ - [L] |
||||||
|
RewriteCond %{REQUEST_FILENAME} !-f |
||||||
|
RewriteCond %{REQUEST_FILENAME} !-d |
||||||
|
RewriteRule . /index.php [L] |
||||||
|
</IfModule> |
||||||
|
|
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>then gave wordpress permission to edit it, according <a href="https://stackoverflow.com/questions/23388144/wordpress-apache-permalinks-not-working-404-error">to this site</a></p> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</article> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</main> |
||||||
|
|
||||||
|
|
||||||
|
<footer class="md-footer"> |
||||||
|
|
||||||
|
<div class="md-footer-nav"> |
||||||
|
<nav class="md-footer-nav__inner md-grid"> |
||||||
|
|
||||||
|
<a href="../locked-out/" title="Locked Out of Wisko" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
<i class="md-icon md-icon--arrow-back md-footer-nav__button"></i> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"> |
||||||
|
<span class="md-flex__ellipsis"> |
||||||
|
<span class="md-footer-nav__direction"> |
||||||
|
Previous |
||||||
|
</span> |
||||||
|
Locked Out of Wisko |
||||||
|
</span> |
||||||
|
</div> |
||||||
|
</a> |
||||||
|
|
||||||
|
|
||||||
|
<a href="../smallmelo-migration-2/" title="smallmelo.com Migration: Part 2" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"> |
||||||
|
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"> |
||||||
|
<span class="md-flex__ellipsis"> |
||||||
|
<span class="md-footer-nav__direction"> |
||||||
|
Next |
||||||
|
</span> |
||||||
|
smallmelo.com Migration: Part 2 |
||||||
|
</span> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
<i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i> |
||||||
|
</div> |
||||||
|
</a> |
||||||
|
|
||||||
|
</nav> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="md-footer-meta md-typeset"> |
||||||
|
<div class="md-footer-meta__inner md-grid"> |
||||||
|
<div class="md-footer-copyright"> |
||||||
|
|
||||||
|
<div class="md-footer-copyright__highlight"> |
||||||
|
Copyright 2018 Charles Reid |
||||||
|
</div> |
||||||
|
|
||||||
|
powered by |
||||||
|
<a href="http://www.mkdocs.org">MkDocs</a> |
||||||
|
and |
||||||
|
<a href="https://squidfunk.github.io/mkdocs-material/"> |
||||||
|
Material for MkDocs</a> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</footer> |
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
<script src="../assets/javascripts/application.0cf9b500.js"></script> |
||||||
|
|
||||||
|
<script>app.initialize({version:"0.17.3",url:{base:".."}})</script> |
||||||
|
|
||||||
|
<script src="../search/require.js"></script> |
||||||
|
|
||||||
|
<script src="../search/search.js"></script> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body> |
||||||
|
</html> |
@ -0,0 +1,597 @@ |
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!DOCTYPE html> |
||||||
|
<html lang="en" class="no-js"> |
||||||
|
<head> |
||||||
|
|
||||||
|
<meta charset="utf-8"> |
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1"> |
||||||
|
<meta http-equiv="x-ua-compatible" content="ie=edge"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="lang:clipboard.copy" content="Copy to clipboard"> |
||||||
|
|
||||||
|
<meta name="lang:clipboard.copied" content="Copied to clipboard"> |
||||||
|
|
||||||
|
<meta name="lang:search.language" content="en"> |
||||||
|
|
||||||
|
<meta name="lang:search.pipeline.stopwords" content="True"> |
||||||
|
|
||||||
|
<meta name="lang:search.pipeline.trimmer" content="True"> |
||||||
|
|
||||||
|
<meta name="lang:search.result.none" content="No matching documents"> |
||||||
|
|
||||||
|
<meta name="lang:search.result.one" content="1 matching document"> |
||||||
|
|
||||||
|
<meta name="lang:search.result.other" content="# matching documents"> |
||||||
|
|
||||||
|
<meta name="lang:search.tokenizer" content="[\s\-]+"> |
||||||
|
|
||||||
|
<link rel="shortcut icon" href="../"> |
||||||
|
<meta name="generator" content="mkdocs-0.17.3, mkdocs-material-2.7.2"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<title>smallmelo.com Migration: Part 2 - the wisko manual</title> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="../assets/stylesheets/application.8d40d89b.css"> |
||||||
|
|
||||||
|
<link rel="stylesheet" href="../assets/stylesheets/application-palette.6079476c.css"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script src="../assets/javascripts/modernizr.1aa3b519.js"></script> |
||||||
|
|
||||||
|
|
||||||
|
<link href="https://fonts.gstatic.com" rel="preconnect" crossorigin> |
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono"> |
||||||
|
<style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style> |
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"> |
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="../css/custom.css"> |
||||||
|
|
||||||
|
|
||||||
|
</head> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<body dir="ltr" data-md-color-primary="green" data-md-color-accent="green"> |
||||||
|
|
||||||
|
<svg class="md-svg"> |
||||||
|
<defs> |
||||||
|
|
||||||
|
|
||||||
|
</defs> |
||||||
|
</svg> |
||||||
|
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="drawer" autocomplete="off"> |
||||||
|
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="search" autocomplete="off"> |
||||||
|
<label class="md-overlay" data-md-component="overlay" for="drawer"></label> |
||||||
|
|
||||||
|
<a href="#smallmelocom-migration-part-2-all-the-things" tabindex="1" class="md-skip"> |
||||||
|
Skip to content |
||||||
|
</a> |
||||||
|
|
||||||
|
|
||||||
|
<header class="md-header" data-md-component="header"> |
||||||
|
<nav class="md-header-nav md-grid"> |
||||||
|
<div class="md-flex"> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
<a href=".." title="the wisko manual" class="md-header-nav__button md-logo"> |
||||||
|
|
||||||
|
<i class="md-icon">cloud</i> |
||||||
|
|
||||||
|
</a> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
<label class="md-icon md-icon--menu md-header-nav__button" for="drawer"></label> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--stretch"> |
||||||
|
<div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"> |
||||||
|
|
||||||
|
|
||||||
|
<span class="md-header-nav__topic"> |
||||||
|
the wisko manual |
||||||
|
</span> |
||||||
|
<span class="md-header-nav__topic"> |
||||||
|
smallmelo.com Migration: Part 2 |
||||||
|
</span> |
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
|
||||||
|
|
||||||
|
<label class="md-icon md-icon--search md-header-nav__button" for="search"></label> |
||||||
|
|
||||||
|
<div class="md-search" data-md-component="search" role="dialog"> |
||||||
|
<label class="md-search__overlay" for="search"></label> |
||||||
|
<div class="md-search__inner" role="search"> |
||||||
|
<form class="md-search__form" name="search"> |
||||||
|
<input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> |
||||||
|
<label class="md-icon md-search__icon" for="search"></label> |
||||||
|
<button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1"> |
||||||
|
 |
||||||
|
</button> |
||||||
|
</form> |
||||||
|
<div class="md-search__output"> |
||||||
|
<div class="md-search__scrollwrap" data-md-scrollfix> |
||||||
|
<div class="md-search-result" data-md-component="result"> |
||||||
|
<div class="md-search-result__meta"> |
||||||
|
Type to start searching |
||||||
|
</div> |
||||||
|
<ol class="md-search-result__list"></ol> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
</nav> |
||||||
|
</header> |
||||||
|
|
||||||
|
<div class="md-container"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<main class="md-main"> |
||||||
|
<div class="md-main__inner md-grid" data-md-component="container"> |
||||||
|
|
||||||
|
|
||||||
|
<div class="md-sidebar md-sidebar--primary" data-md-component="navigation"> |
||||||
|
<div class="md-sidebar__scrollwrap"> |
||||||
|
<div class="md-sidebar__inner"> |
||||||
|
<nav class="md-nav md-nav--primary" data-md-level="0"> |
||||||
|
<label class="md-nav__title md-nav__title--site" for="drawer"> |
||||||
|
<span class="md-nav__button md-logo"> |
||||||
|
|
||||||
|
<i class="md-icon">cloud</i> |
||||||
|
|
||||||
|
</span> |
||||||
|
the wisko manual |
||||||
|
</label> |
||||||
|
|
||||||
|
<ul class="md-nav__list" data-md-scrollfix> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href=".." title="Index" class="md-nav__link"> |
||||||
|
Index |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../boot2root/" title="Wisko Boot to Root" class="md-nav__link"> |
||||||
|
Wisko Boot to Root |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../faq/" title="Wisko FAQ" class="md-nav__link"> |
||||||
|
Wisko FAQ |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../locked-out/" title="Locked Out of Wisko" class="md-nav__link"> |
||||||
|
Locked Out of Wisko |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../smallmelo-migration-1/" title="smallmelo.com Migration: Part 1" class="md-nav__link"> |
||||||
|
smallmelo.com Migration: Part 1 |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item md-nav__item--active"> |
||||||
|
|
||||||
|
<input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="toc"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<label class="md-nav__link md-nav__link--active" for="toc"> |
||||||
|
smallmelo.com Migration: Part 2 |
||||||
|
</label> |
||||||
|
|
||||||
|
<a href="./" title="smallmelo.com Migration: Part 2" class="md-nav__link md-nav__link--active"> |
||||||
|
smallmelo.com Migration: Part 2 |
||||||
|
</a> |
||||||
|
|
||||||
|
|
||||||
|
<nav class="md-nav md-nav--secondary"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<label class="md-nav__title" for="toc">Table of contents</label> |
||||||
|
<ul class="md-nav__list" data-md-scrollfix> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#grant-melo-permission-to-create-files-and-upload-via-sftp-using-filezilla" title="grant melo permission to create files and upload via sftp using filezilla" class="md-nav__link"> |
||||||
|
grant melo permission to create files and upload via sftp using filezilla |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#copied-htmlphp-files-into-varwwwsmallmelo" title="copied html/php files into var/www/smallmelo" class="md-nav__link"> |
||||||
|
copied html/php files into var/www/smallmelo |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#add-the-dns-records-to-dreamhost-to-point-to-the-server" title="add the dns records to dreamhost to point to the server" class="md-nav__link"> |
||||||
|
add the dns records to dreamhost to point to the server |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#create-new-conf-file-for-smallmelo" title="create new conf file for smallmelo" class="md-nav__link"> |
||||||
|
create new conf file for smallmelo |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#edit-the-conf-file-to-point-to-smallmelocom" title="edit the conf file to point to smallmelo.com" class="md-nav__link"> |
||||||
|
edit the conf file to point to smallmelo.com |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#enable-the-site" title="enable the site" class="md-nav__link"> |
||||||
|
enable the site |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#make-a-backup-copy-all-files-from-smallmelocom" title="make a backup copy all files from smallmelo.com" class="md-nav__link"> |
||||||
|
make a backup copy all files from smallmelo.com |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#made-a-basic-indexhtml-file" title="made a basic index.html file" class="md-nav__link"> |
||||||
|
made a basic index.html file |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#turn-off-hosting-by-dreamhost" title="turn off hosting by dreamhost" class="md-nav__link"> |
||||||
|
turn off hosting by dreamhost |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#restart-apache2" title="restart apache2" class="md-nav__link"> |
||||||
|
restart apache2 |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</ul> |
||||||
|
|
||||||
|
</nav> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../smallmelo-migration-3/" title="smallmelo.com Migration: Part 3" class="md-nav__link"> |
||||||
|
smallmelo.com Migration: Part 3 |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../wisko-gitea/" title="Wisko Gitea" class="md-nav__link"> |
||||||
|
Wisko Gitea |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../geoserver-https/" title="Connecting to Geoserver Over HTTPS" class="md-nav__link"> |
||||||
|
Connecting to Geoserver Over HTTPS |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
</ul> |
||||||
|
</nav> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
<div class="md-sidebar md-sidebar--secondary" data-md-component="toc"> |
||||||
|
<div class="md-sidebar__scrollwrap"> |
||||||
|
<div class="md-sidebar__inner"> |
||||||
|
|
||||||
|
<nav class="md-nav md-nav--secondary"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<label class="md-nav__title" for="toc">Table of contents</label> |
||||||
|
<ul class="md-nav__list" data-md-scrollfix> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#grant-melo-permission-to-create-files-and-upload-via-sftp-using-filezilla" title="grant melo permission to create files and upload via sftp using filezilla" class="md-nav__link"> |
||||||
|
grant melo permission to create files and upload via sftp using filezilla |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#copied-htmlphp-files-into-varwwwsmallmelo" title="copied html/php files into var/www/smallmelo" class="md-nav__link"> |
||||||
|
copied html/php files into var/www/smallmelo |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#add-the-dns-records-to-dreamhost-to-point-to-the-server" title="add the dns records to dreamhost to point to the server" class="md-nav__link"> |
||||||
|
add the dns records to dreamhost to point to the server |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#create-new-conf-file-for-smallmelo" title="create new conf file for smallmelo" class="md-nav__link"> |
||||||
|
create new conf file for smallmelo |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#edit-the-conf-file-to-point-to-smallmelocom" title="edit the conf file to point to smallmelo.com" class="md-nav__link"> |
||||||
|
edit the conf file to point to smallmelo.com |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#enable-the-site" title="enable the site" class="md-nav__link"> |
||||||
|
enable the site |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#make-a-backup-copy-all-files-from-smallmelocom" title="make a backup copy all files from smallmelo.com" class="md-nav__link"> |
||||||
|
make a backup copy all files from smallmelo.com |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#made-a-basic-indexhtml-file" title="made a basic index.html file" class="md-nav__link"> |
||||||
|
made a basic index.html file |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#turn-off-hosting-by-dreamhost" title="turn off hosting by dreamhost" class="md-nav__link"> |
||||||
|
turn off hosting by dreamhost |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#restart-apache2" title="restart apache2" class="md-nav__link"> |
||||||
|
restart apache2 |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</ul> |
||||||
|
|
||||||
|
</nav> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
<div class="md-content"> |
||||||
|
<article class="md-content__inner md-typeset"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h1 id="smallmelocom-migration-part-2-all-the-things">smallmelo.com migration part 2 (all the things)</h1> |
||||||
|
<h2 id="grant-melo-permission-to-create-files-and-upload-via-sftp-using-filezilla">grant melo permission to create files and upload via sftp using filezilla</h2> |
||||||
|
<p>used <a href="https://www.digitalocean.com/community/questions/i-can-t-seem-to-grant-myself-write-permissions-to-the-www-directory">these</a> instructions</p> |
||||||
|
<h2 id="copied-htmlphp-files-into-varwwwsmallmelo">copied html/php files into var/www/smallmelo</h2> |
||||||
|
<p>using filazilla</p> |
||||||
|
<h2 id="add-the-dns-records-to-dreamhost-to-point-to-the-server">add the dns records to dreamhost to point to the server</h2> |
||||||
|
<p>159.65.75.41 (a) |
||||||
|
www smallmelo.com (cname)</p> |
||||||
|
<h2 id="create-new-conf-file-for-smallmelo">create new conf file for smallmelo</h2> |
||||||
|
<pre><code>sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/smallmelo.conf |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<h2 id="edit-the-conf-file-to-point-to-smallmelocom">edit the conf file to point to smallmelo.com</h2> |
||||||
|
<h2 id="enable-the-site">enable the site</h2> |
||||||
|
<pre><code>sudo a2ensite smallmelo.conf |
||||||
|
service apache2 reload |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<h2 id="make-a-backup-copy-all-files-from-smallmelocom">make a backup copy all files from smallmelo.com</h2> |
||||||
|
<h2 id="made-a-basic-indexhtml-file">made a basic index.html file</h2> |
||||||
|
<h2 id="turn-off-hosting-by-dreamhost">turn off hosting by dreamhost</h2> |
||||||
|
<h2 id="restart-apache2">restart apache2</h2> |
||||||
|
<pre><code>sudo service apache2 restart |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</article> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</main> |
||||||
|
|
||||||
|
|
||||||
|
<footer class="md-footer"> |
||||||
|
|
||||||
|
<div class="md-footer-nav"> |
||||||
|
<nav class="md-footer-nav__inner md-grid"> |
||||||
|
|
||||||
|
<a href="../smallmelo-migration-1/" title="smallmelo.com Migration: Part 1" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
<i class="md-icon md-icon--arrow-back md-footer-nav__button"></i> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"> |
||||||
|
<span class="md-flex__ellipsis"> |
||||||
|
<span class="md-footer-nav__direction"> |
||||||
|
Previous |
||||||
|
</span> |
||||||
|
smallmelo.com Migration: Part 1 |
||||||
|
</span> |
||||||
|
</div> |
||||||
|
</a> |
||||||
|
|
||||||
|
|
||||||
|
<a href="../smallmelo-migration-3/" title="smallmelo.com Migration: Part 3" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"> |
||||||
|
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"> |
||||||
|
<span class="md-flex__ellipsis"> |
||||||
|
<span class="md-footer-nav__direction"> |
||||||
|
Next |
||||||
|
</span> |
||||||
|
smallmelo.com Migration: Part 3 |
||||||
|
</span> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
<i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i> |
||||||
|
</div> |
||||||
|
</a> |
||||||
|
|
||||||
|
</nav> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="md-footer-meta md-typeset"> |
||||||
|
<div class="md-footer-meta__inner md-grid"> |
||||||
|
<div class="md-footer-copyright"> |
||||||
|
|
||||||
|
<div class="md-footer-copyright__highlight"> |
||||||
|
Copyright 2018 Charles Reid |
||||||
|
</div> |
||||||
|
|
||||||
|
powered by |
||||||
|
<a href="http://www.mkdocs.org">MkDocs</a> |
||||||
|
and |
||||||
|
<a href="https://squidfunk.github.io/mkdocs-material/"> |
||||||
|
Material for MkDocs</a> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</footer> |
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
<script src="../assets/javascripts/application.0cf9b500.js"></script> |
||||||
|
|
||||||
|
<script>app.initialize({version:"0.17.3",url:{base:".."}})</script> |
||||||
|
|
||||||
|
<script src="../search/require.js"></script> |
||||||
|
|
||||||
|
<script src="../search/search.js"></script> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body> |
||||||
|
</html> |
@ -0,0 +1,654 @@ |
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!DOCTYPE html> |
||||||
|
<html lang="en" class="no-js"> |
||||||
|
<head> |
||||||
|
|
||||||
|
<meta charset="utf-8"> |
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1"> |
||||||
|
<meta http-equiv="x-ua-compatible" content="ie=edge"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="lang:clipboard.copy" content="Copy to clipboard"> |
||||||
|
|
||||||
|
<meta name="lang:clipboard.copied" content="Copied to clipboard"> |
||||||
|
|
||||||
|
<meta name="lang:search.language" content="en"> |
||||||
|
|
||||||
|
<meta name="lang:search.pipeline.stopwords" content="True"> |
||||||
|
|
||||||
|
<meta name="lang:search.pipeline.trimmer" content="True"> |
||||||
|
|
||||||
|
<meta name="lang:search.result.none" content="No matching documents"> |
||||||
|
|
||||||
|
<meta name="lang:search.result.one" content="1 matching document"> |
||||||
|
|
||||||
|
<meta name="lang:search.result.other" content="# matching documents"> |
||||||
|
|
||||||
|
<meta name="lang:search.tokenizer" content="[\s\-]+"> |
||||||
|
|
||||||
|
<link rel="shortcut icon" href="../"> |
||||||
|
<meta name="generator" content="mkdocs-0.17.3, mkdocs-material-2.7.2"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<title>smallmelo.com Migration: Part 3 - the wisko manual</title> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="../assets/stylesheets/application.8d40d89b.css"> |
||||||
|
|
||||||
|
<link rel="stylesheet" href="../assets/stylesheets/application-palette.6079476c.css"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script src="../assets/javascripts/modernizr.1aa3b519.js"></script> |
||||||
|
|
||||||
|
|
||||||
|
<link href="https://fonts.gstatic.com" rel="preconnect" crossorigin> |
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono"> |
||||||
|
<style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style> |
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"> |
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="../css/custom.css"> |
||||||
|
|
||||||
|
|
||||||
|
</head> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<body dir="ltr" data-md-color-primary="green" data-md-color-accent="green"> |
||||||
|
|
||||||
|
<svg class="md-svg"> |
||||||
|
<defs> |
||||||
|
|
||||||
|
|
||||||
|
</defs> |
||||||
|
</svg> |
||||||
|
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="drawer" autocomplete="off"> |
||||||
|
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="search" autocomplete="off"> |
||||||
|
<label class="md-overlay" data-md-component="overlay" for="drawer"></label> |
||||||
|
|
||||||
|
<a href="#smallmelocom-migration-part-3-allthehatsformaps-to-smallmelo" tabindex="1" class="md-skip"> |
||||||
|
Skip to content |
||||||
|
</a> |
||||||
|
|
||||||
|
|
||||||
|
<header class="md-header" data-md-component="header"> |
||||||
|
<nav class="md-header-nav md-grid"> |
||||||
|
<div class="md-flex"> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
<a href=".." title="the wisko manual" class="md-header-nav__button md-logo"> |
||||||
|
|
||||||
|
<i class="md-icon">cloud</i> |
||||||
|
|
||||||
|
</a> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
<label class="md-icon md-icon--menu md-header-nav__button" for="drawer"></label> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--stretch"> |
||||||
|
<div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"> |
||||||
|
|
||||||
|
|
||||||
|
<span class="md-header-nav__topic"> |
||||||
|
the wisko manual |
||||||
|
</span> |
||||||
|
<span class="md-header-nav__topic"> |
||||||
|
smallmelo.com Migration: Part 3 |
||||||
|
</span> |
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
|
||||||
|
|
||||||
|
<label class="md-icon md-icon--search md-header-nav__button" for="search"></label> |
||||||
|
|
||||||
|
<div class="md-search" data-md-component="search" role="dialog"> |
||||||
|
<label class="md-search__overlay" for="search"></label> |
||||||
|
<div class="md-search__inner" role="search"> |
||||||
|
<form class="md-search__form" name="search"> |
||||||
|
<input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> |
||||||
|
<label class="md-icon md-search__icon" for="search"></label> |
||||||
|
<button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1"> |
||||||
|
 |
||||||
|
</button> |
||||||
|
</form> |
||||||
|
<div class="md-search__output"> |
||||||
|
<div class="md-search__scrollwrap" data-md-scrollfix> |
||||||
|
<div class="md-search-result" data-md-component="result"> |
||||||
|
<div class="md-search-result__meta"> |
||||||
|
Type to start searching |
||||||
|
</div> |
||||||
|
<ol class="md-search-result__list"></ol> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
</nav> |
||||||
|
</header> |
||||||
|
|
||||||
|
<div class="md-container"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<main class="md-main"> |
||||||
|
<div class="md-main__inner md-grid" data-md-component="container"> |
||||||
|
|
||||||
|
|
||||||
|
<div class="md-sidebar md-sidebar--primary" data-md-component="navigation"> |
||||||
|
<div class="md-sidebar__scrollwrap"> |
||||||
|
<div class="md-sidebar__inner"> |
||||||
|
<nav class="md-nav md-nav--primary" data-md-level="0"> |
||||||
|
<label class="md-nav__title md-nav__title--site" for="drawer"> |
||||||
|
<span class="md-nav__button md-logo"> |
||||||
|
|
||||||
|
<i class="md-icon">cloud</i> |
||||||
|
|
||||||
|
</span> |
||||||
|
the wisko manual |
||||||
|
</label> |
||||||
|
|
||||||
|
<ul class="md-nav__list" data-md-scrollfix> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href=".." title="Index" class="md-nav__link"> |
||||||
|
Index |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../boot2root/" title="Wisko Boot to Root" class="md-nav__link"> |
||||||
|
Wisko Boot to Root |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../faq/" title="Wisko FAQ" class="md-nav__link"> |
||||||
|
Wisko FAQ |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../locked-out/" title="Locked Out of Wisko" class="md-nav__link"> |
||||||
|
Locked Out of Wisko |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../smallmelo-migration-1/" title="smallmelo.com Migration: Part 1" class="md-nav__link"> |
||||||
|
smallmelo.com Migration: Part 1 |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../smallmelo-migration-2/" title="smallmelo.com Migration: Part 2" class="md-nav__link"> |
||||||
|
smallmelo.com Migration: Part 2 |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item md-nav__item--active"> |
||||||
|
|
||||||
|
<input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="toc"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<label class="md-nav__link md-nav__link--active" for="toc"> |
||||||
|
smallmelo.com Migration: Part 3 |
||||||
|
</label> |
||||||
|
|
||||||
|
<a href="./" title="smallmelo.com Migration: Part 3" class="md-nav__link md-nav__link--active"> |
||||||
|
smallmelo.com Migration: Part 3 |
||||||
|
</a> |
||||||
|
|
||||||
|
|
||||||
|
<nav class="md-nav md-nav--secondary"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<label class="md-nav__title" for="toc">Table of contents</label> |
||||||
|
<ul class="md-nav__list" data-md-scrollfix> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#remove-placeholder-file" title="remove placeholder file" class="md-nav__link"> |
||||||
|
remove placeholder file |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#copy-the-files-to-smallmelo" title="copy the files to smallmelo" class="md-nav__link"> |
||||||
|
copy the files to smallmelo |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#update-the-site-in-wordpress" title="update the site in wordpress" class="md-nav__link"> |
||||||
|
update the site in wordpress |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#copy-the-relevent-stuff-over-to-the-smallmeloconf" title="copy the relevent stuff over to the smallmelo.conf" class="md-nav__link"> |
||||||
|
copy the relevent stuff over to the smallmelo.conf |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#disable-and-enable-sites" title="disable and enable sites" class="md-nav__link"> |
||||||
|
disable and enable sites |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#give-permissions" title="give permissions" class="md-nav__link"> |
||||||
|
give permissions |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#reboot" title="reboot" class="md-nav__link"> |
||||||
|
reboot |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#disabled-reenabled-reload" title="disabled, reenabled, reload" class="md-nav__link"> |
||||||
|
disabled, reenabled, reload |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#disabling-allthehats" title="disabling allthehats" class="md-nav__link"> |
||||||
|
disabling allthehats |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#in-the-varwwww" title="in the /var/wwww" class="md-nav__link"> |
||||||
|
in the /var/wwww |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#in-dreamhost" title="in dreamhost" class="md-nav__link"> |
||||||
|
in dreamhost |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</ul> |
||||||
|
|
||||||
|
</nav> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../wisko-gitea/" title="Wisko Gitea" class="md-nav__link"> |
||||||
|
Wisko Gitea |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../geoserver-https/" title="Connecting to Geoserver Over HTTPS" class="md-nav__link"> |
||||||
|
Connecting to Geoserver Over HTTPS |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
</ul> |
||||||
|
</nav> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
<div class="md-sidebar md-sidebar--secondary" data-md-component="toc"> |
||||||
|
<div class="md-sidebar__scrollwrap"> |
||||||
|
<div class="md-sidebar__inner"> |
||||||
|
|
||||||
|
<nav class="md-nav md-nav--secondary"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<label class="md-nav__title" for="toc">Table of contents</label> |
||||||
|
<ul class="md-nav__list" data-md-scrollfix> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#remove-placeholder-file" title="remove placeholder file" class="md-nav__link"> |
||||||
|
remove placeholder file |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#copy-the-files-to-smallmelo" title="copy the files to smallmelo" class="md-nav__link"> |
||||||
|
copy the files to smallmelo |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#update-the-site-in-wordpress" title="update the site in wordpress" class="md-nav__link"> |
||||||
|
update the site in wordpress |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#copy-the-relevent-stuff-over-to-the-smallmeloconf" title="copy the relevent stuff over to the smallmelo.conf" class="md-nav__link"> |
||||||
|
copy the relevent stuff over to the smallmelo.conf |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#disable-and-enable-sites" title="disable and enable sites" class="md-nav__link"> |
||||||
|
disable and enable sites |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#give-permissions" title="give permissions" class="md-nav__link"> |
||||||
|
give permissions |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#reboot" title="reboot" class="md-nav__link"> |
||||||
|
reboot |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#disabled-reenabled-reload" title="disabled, reenabled, reload" class="md-nav__link"> |
||||||
|
disabled, reenabled, reload |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#disabling-allthehats" title="disabling allthehats" class="md-nav__link"> |
||||||
|
disabling allthehats |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#in-the-varwwww" title="in the /var/wwww" class="md-nav__link"> |
||||||
|
in the /var/wwww |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#in-dreamhost" title="in dreamhost" class="md-nav__link"> |
||||||
|
in dreamhost |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</ul> |
||||||
|
|
||||||
|
</nav> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
<div class="md-content"> |
||||||
|
<article class="md-content__inner md-typeset"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h1 id="smallmelocom-migration-part-3-allthehatsformaps-to-smallmelo">smallmelo.com migration part 3 (allthehatsformaps to smallmelo)</h1> |
||||||
|
<h2 id="remove-placeholder-file">remove placeholder file</h2> |
||||||
|
<pre><code>sudo rm index.html |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<h2 id="copy-the-files-to-smallmelo">copy the files to smallmelo</h2> |
||||||
|
<pre><code>sudo cp -a /var/www/allthehatsformaps/public_html/* /var/www/smallmelo/public_html |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<h2 id="update-the-site-in-wordpress">update the site in wordpress</h2> |
||||||
|
<p>logged back into wordpress and changed the url to: <a href="http://smallmelo.com/">http://smallmelo.com</a></p> |
||||||
|
<h2 id="copy-the-relevent-stuff-over-to-the-smallmeloconf">copy the relevent stuff over to the smallmelo.conf</h2> |
||||||
|
<pre><code><Directory /var/www/smallmelo/public_html/> |
||||||
|
|
||||||
|
DirectoryIndex index.php |
||||||
|
|
||||||
|
AllowOverride All |
||||||
|
|
||||||
|
Order allow,deny |
||||||
|
|
||||||
|
Allow from all |
||||||
|
|
||||||
|
</Directory> |
||||||
|
|
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<h2 id="disable-and-enable-sites">disable and enable sites</h2> |
||||||
|
<pre><code>sudo a2dissite allthehatsformaps.conf |
||||||
|
sudo a2ensite smallmelo.conf |
||||||
|
sudo /etc/init.d/apache2 restart |
||||||
|
|
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<h2 id="give-permissions">give permissions</h2> |
||||||
|
<pre><code>sudo chown -v :www-data /var/www/smallmelo/public_html/.htaccess |
||||||
|
|
||||||
|
sudo chmod -v 664 "/var/www/smallmelo/public_html/.htaccess" |
||||||
|
|
||||||
|
|
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<h2 id="reboot">reboot</h2> |
||||||
|
<pre><code>sudo /etc/init.d/apache2 restart |
||||||
|
|
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<h2 id="disabled-reenabled-reload">disabled, reenabled, reload</h2> |
||||||
|
<pre><code>sudo a2dissite smallmelo.conf |
||||||
|
sudo a2ensite smallmelo.conf |
||||||
|
sudo /etc/init.d/apache2 restart |
||||||
|
service apache2 reload |
||||||
|
|
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<h2 id="disabling-allthehats">disabling allthehats</h2> |
||||||
|
<pre><code>sudo rm allthehatsformaps.conf |
||||||
|
service apache2 reload |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<h2 id="in-the-varwwww">in the /var/wwww</h2> |
||||||
|
<pre><code>sudo rm -r allthehatsformaps |
||||||
|
|
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<h2 id="in-dreamhost">in dreamhost</h2> |
||||||
|
<p>remove wisko DNS records |
||||||
|
setup redirect</p> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</article> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</main> |
||||||
|
|
||||||
|
|
||||||
|
<footer class="md-footer"> |
||||||
|
|
||||||
|
<div class="md-footer-nav"> |
||||||
|
<nav class="md-footer-nav__inner md-grid"> |
||||||
|
|
||||||
|
<a href="../smallmelo-migration-2/" title="smallmelo.com Migration: Part 2" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
<i class="md-icon md-icon--arrow-back md-footer-nav__button"></i> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"> |
||||||
|
<span class="md-flex__ellipsis"> |
||||||
|
<span class="md-footer-nav__direction"> |
||||||
|
Previous |
||||||
|
</span> |
||||||
|
smallmelo.com Migration: Part 2 |
||||||
|
</span> |
||||||
|
</div> |
||||||
|
</a> |
||||||
|
|
||||||
|
|
||||||
|
<a href="../wisko-gitea/" title="Wisko Gitea" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"> |
||||||
|
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"> |
||||||
|
<span class="md-flex__ellipsis"> |
||||||
|
<span class="md-footer-nav__direction"> |
||||||
|
Next |
||||||
|
</span> |
||||||
|
Wisko Gitea |
||||||
|
</span> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
<i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i> |
||||||
|
</div> |
||||||
|
</a> |
||||||
|
|
||||||
|
</nav> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="md-footer-meta md-typeset"> |
||||||
|
<div class="md-footer-meta__inner md-grid"> |
||||||
|
<div class="md-footer-copyright"> |
||||||
|
|
||||||
|
<div class="md-footer-copyright__highlight"> |
||||||
|
Copyright 2018 Charles Reid |
||||||
|
</div> |
||||||
|
|
||||||
|
powered by |
||||||
|
<a href="http://www.mkdocs.org">MkDocs</a> |
||||||
|
and |
||||||
|
<a href="https://squidfunk.github.io/mkdocs-material/"> |
||||||
|
Material for MkDocs</a> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</footer> |
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
<script src="../assets/javascripts/application.0cf9b500.js"></script> |
||||||
|
|
||||||
|
<script>app.initialize({version:"0.17.3",url:{base:".."}})</script> |
||||||
|
|
||||||
|
<script src="../search/require.js"></script> |
||||||
|
|
||||||
|
<script src="../search/search.js"></script> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body> |
||||||
|
</html> |
@ -0,0 +1,868 @@ |
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!DOCTYPE html> |
||||||
|
<html lang="en" class="no-js"> |
||||||
|
<head> |
||||||
|
|
||||||
|
<meta charset="utf-8"> |
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1"> |
||||||
|
<meta http-equiv="x-ua-compatible" content="ie=edge"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<meta name="lang:clipboard.copy" content="Copy to clipboard"> |
||||||
|
|
||||||
|
<meta name="lang:clipboard.copied" content="Copied to clipboard"> |
||||||
|
|
||||||
|
<meta name="lang:search.language" content="en"> |
||||||
|
|
||||||
|
<meta name="lang:search.pipeline.stopwords" content="True"> |
||||||
|
|
||||||
|
<meta name="lang:search.pipeline.trimmer" content="True"> |
||||||
|
|
||||||
|
<meta name="lang:search.result.none" content="No matching documents"> |
||||||
|
|
||||||
|
<meta name="lang:search.result.one" content="1 matching document"> |
||||||
|
|
||||||
|
<meta name="lang:search.result.other" content="# matching documents"> |
||||||
|
|
||||||
|
<meta name="lang:search.tokenizer" content="[\s\-]+"> |
||||||
|
|
||||||
|
<link rel="shortcut icon" href="../"> |
||||||
|
<meta name="generator" content="mkdocs-0.17.3, mkdocs-material-2.7.2"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<title>Wisko Gitea - the wisko manual</title> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="../assets/stylesheets/application.8d40d89b.css"> |
||||||
|
|
||||||
|
<link rel="stylesheet" href="../assets/stylesheets/application-palette.6079476c.css"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script src="../assets/javascripts/modernizr.1aa3b519.js"></script> |
||||||
|
|
||||||
|
|
||||||
|
<link href="https://fonts.gstatic.com" rel="preconnect" crossorigin> |
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono"> |
||||||
|
<style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style> |
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"> |
||||||
|
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="../css/custom.css"> |
||||||
|
|
||||||
|
|
||||||
|
</head> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<body dir="ltr" data-md-color-primary="green" data-md-color-accent="green"> |
||||||
|
|
||||||
|
<svg class="md-svg"> |
||||||
|
<defs> |
||||||
|
|
||||||
|
|
||||||
|
</defs> |
||||||
|
</svg> |
||||||
|
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="drawer" autocomplete="off"> |
||||||
|
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="search" autocomplete="off"> |
||||||
|
<label class="md-overlay" data-md-component="overlay" for="drawer"></label> |
||||||
|
|
||||||
|
<a href="#wisko-gitea" tabindex="1" class="md-skip"> |
||||||
|
Skip to content |
||||||
|
</a> |
||||||
|
|
||||||
|
|
||||||
|
<header class="md-header" data-md-component="header"> |
||||||
|
<nav class="md-header-nav md-grid"> |
||||||
|
<div class="md-flex"> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
<a href=".." title="the wisko manual" class="md-header-nav__button md-logo"> |
||||||
|
|
||||||
|
<i class="md-icon">cloud</i> |
||||||
|
|
||||||
|
</a> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
<label class="md-icon md-icon--menu md-header-nav__button" for="drawer"></label> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--stretch"> |
||||||
|
<div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"> |
||||||
|
|
||||||
|
|
||||||
|
<span class="md-header-nav__topic"> |
||||||
|
the wisko manual |
||||||
|
</span> |
||||||
|
<span class="md-header-nav__topic"> |
||||||
|
Wisko Gitea |
||||||
|
</span> |
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
|
||||||
|
|
||||||
|
<label class="md-icon md-icon--search md-header-nav__button" for="search"></label> |
||||||
|
|
||||||
|
<div class="md-search" data-md-component="search" role="dialog"> |
||||||
|
<label class="md-search__overlay" for="search"></label> |
||||||
|
<div class="md-search__inner" role="search"> |
||||||
|
<form class="md-search__form" name="search"> |
||||||
|
<input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> |
||||||
|
<label class="md-icon md-search__icon" for="search"></label> |
||||||
|
<button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1"> |
||||||
|
 |
||||||
|
</button> |
||||||
|
</form> |
||||||
|
<div class="md-search__output"> |
||||||
|
<div class="md-search__scrollwrap" data-md-scrollfix> |
||||||
|
<div class="md-search-result" data-md-component="result"> |
||||||
|
<div class="md-search-result__meta"> |
||||||
|
Type to start searching |
||||||
|
</div> |
||||||
|
<ol class="md-search-result__list"></ol> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
</div> |
||||||
|
</nav> |
||||||
|
</header> |
||||||
|
|
||||||
|
<div class="md-container"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<main class="md-main"> |
||||||
|
<div class="md-main__inner md-grid" data-md-component="container"> |
||||||
|
|
||||||
|
|
||||||
|
<div class="md-sidebar md-sidebar--primary" data-md-component="navigation"> |
||||||
|
<div class="md-sidebar__scrollwrap"> |
||||||
|
<div class="md-sidebar__inner"> |
||||||
|
<nav class="md-nav md-nav--primary" data-md-level="0"> |
||||||
|
<label class="md-nav__title md-nav__title--site" for="drawer"> |
||||||
|
<span class="md-nav__button md-logo"> |
||||||
|
|
||||||
|
<i class="md-icon">cloud</i> |
||||||
|
|
||||||
|
</span> |
||||||
|
the wisko manual |
||||||
|
</label> |
||||||
|
|
||||||
|
<ul class="md-nav__list" data-md-scrollfix> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href=".." title="Index" class="md-nav__link"> |
||||||
|
Index |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../boot2root/" title="Wisko Boot to Root" class="md-nav__link"> |
||||||
|
Wisko Boot to Root |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../faq/" title="Wisko FAQ" class="md-nav__link"> |
||||||
|
Wisko FAQ |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../locked-out/" title="Locked Out of Wisko" class="md-nav__link"> |
||||||
|
Locked Out of Wisko |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../smallmelo-migration-1/" title="smallmelo.com Migration: Part 1" class="md-nav__link"> |
||||||
|
smallmelo.com Migration: Part 1 |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../smallmelo-migration-2/" title="smallmelo.com Migration: Part 2" class="md-nav__link"> |
||||||
|
smallmelo.com Migration: Part 2 |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../smallmelo-migration-3/" title="smallmelo.com Migration: Part 3" class="md-nav__link"> |
||||||
|
smallmelo.com Migration: Part 3 |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item md-nav__item--active"> |
||||||
|
|
||||||
|
<input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="toc"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<label class="md-nav__link md-nav__link--active" for="toc"> |
||||||
|
Wisko Gitea |
||||||
|
</label> |
||||||
|
|
||||||
|
<a href="./" title="Wisko Gitea" class="md-nav__link md-nav__link--active"> |
||||||
|
Wisko Gitea |
||||||
|
</a> |
||||||
|
|
||||||
|
|
||||||
|
<nav class="md-nav md-nav--secondary"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<label class="md-nav__title" for="toc">Table of contents</label> |
||||||
|
<ul class="md-nav__list" data-md-scrollfix> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#before-you-begin-gitea-setup-info" title="before you begin: gitea setup info" class="md-nav__link"> |
||||||
|
before you begin: gitea setup info |
||||||
|
</a> |
||||||
|
|
||||||
|
<nav class="md-nav"> |
||||||
|
<ul class="md-nav__list"> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#where-is-gitea" title="where is gitea" class="md-nav__link"> |
||||||
|
where is gitea |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#where-is-go" title="where is go" class="md-nav__link"> |
||||||
|
where is go |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
</ul> |
||||||
|
</nav> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#task-summary" title="task summary" class="md-nav__link"> |
||||||
|
task summary |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#set-up-git-subdomain" title="set up git subdomain" class="md-nav__link"> |
||||||
|
set up git subdomain |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#apache-web-server-settings" title="apache web server settings" class="md-nav__link"> |
||||||
|
apache web server settings |
||||||
|
</a> |
||||||
|
|
||||||
|
<nav class="md-nav"> |
||||||
|
<ul class="md-nav__list"> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#apache-configuration-http" title="apache configuration: http" class="md-nav__link"> |
||||||
|
apache configuration: http |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#apache-configuration-https" title="apache configuration: https" class="md-nav__link"> |
||||||
|
apache configuration: https |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#making-apache-certificate" title="making apache certificate" class="md-nav__link"> |
||||||
|
making apache certificate |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#apache-configuration-https-revisited" title="apache configuration: https (revisited)" class="md-nav__link"> |
||||||
|
apache configuration: https (revisited) |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#enable-and-activate" title="enable and activate" class="md-nav__link"> |
||||||
|
enable and activate |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
</ul> |
||||||
|
</nav> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#gitea-configuration" title="gitea configuration" class="md-nav__link"> |
||||||
|
gitea configuration |
||||||
|
</a> |
||||||
|
|
||||||
|
<nav class="md-nav"> |
||||||
|
<ul class="md-nav__list"> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#gitea-version" title="gitea version" class="md-nav__link"> |
||||||
|
gitea version |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
</ul> |
||||||
|
</nav> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#https-certs" title="https certs" class="md-nav__link"> |
||||||
|
https certs |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</ul> |
||||||
|
|
||||||
|
</nav> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="../geoserver-https/" title="Connecting to Geoserver Over HTTPS" class="md-nav__link"> |
||||||
|
Connecting to Geoserver Over HTTPS |
||||||
|
</a> |
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
</ul> |
||||||
|
</nav> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
<div class="md-sidebar md-sidebar--secondary" data-md-component="toc"> |
||||||
|
<div class="md-sidebar__scrollwrap"> |
||||||
|
<div class="md-sidebar__inner"> |
||||||
|
|
||||||
|
<nav class="md-nav md-nav--secondary"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<label class="md-nav__title" for="toc">Table of contents</label> |
||||||
|
<ul class="md-nav__list" data-md-scrollfix> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#before-you-begin-gitea-setup-info" title="before you begin: gitea setup info" class="md-nav__link"> |
||||||
|
before you begin: gitea setup info |
||||||
|
</a> |
||||||
|
|
||||||
|
<nav class="md-nav"> |
||||||
|
<ul class="md-nav__list"> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#where-is-gitea" title="where is gitea" class="md-nav__link"> |
||||||
|
where is gitea |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#where-is-go" title="where is go" class="md-nav__link"> |
||||||
|
where is go |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
</ul> |
||||||
|
</nav> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#task-summary" title="task summary" class="md-nav__link"> |
||||||
|
task summary |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#set-up-git-subdomain" title="set up git subdomain" class="md-nav__link"> |
||||||
|
set up git subdomain |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#apache-web-server-settings" title="apache web server settings" class="md-nav__link"> |
||||||
|
apache web server settings |
||||||
|
</a> |
||||||
|
|
||||||
|
<nav class="md-nav"> |
||||||
|
<ul class="md-nav__list"> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#apache-configuration-http" title="apache configuration: http" class="md-nav__link"> |
||||||
|
apache configuration: http |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#apache-configuration-https" title="apache configuration: https" class="md-nav__link"> |
||||||
|
apache configuration: https |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#making-apache-certificate" title="making apache certificate" class="md-nav__link"> |
||||||
|
making apache certificate |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#apache-configuration-https-revisited" title="apache configuration: https (revisited)" class="md-nav__link"> |
||||||
|
apache configuration: https (revisited) |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#enable-and-activate" title="enable and activate" class="md-nav__link"> |
||||||
|
enable and activate |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
</ul> |
||||||
|
</nav> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#gitea-configuration" title="gitea configuration" class="md-nav__link"> |
||||||
|
gitea configuration |
||||||
|
</a> |
||||||
|
|
||||||
|
<nav class="md-nav"> |
||||||
|
<ul class="md-nav__list"> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#gitea-version" title="gitea version" class="md-nav__link"> |
||||||
|
gitea version |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
</ul> |
||||||
|
</nav> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
<li class="md-nav__item"> |
||||||
|
<a href="#https-certs" title="https certs" class="md-nav__link"> |
||||||
|
https certs |
||||||
|
</a> |
||||||
|
|
||||||
|
</li> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</ul> |
||||||
|
|
||||||
|
</nav> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
<div class="md-content"> |
||||||
|
<article class="md-content__inner md-typeset"> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h1 id="wisko-gitea">wisko gitea</h1> |
||||||
|
<h2 id="before-you-begin-gitea-setup-info">before you begin: gitea setup info</h2> |
||||||
|
<p>(see <a href="../boot2root/">boot to root</a> for details on how gitea was set up).</p> |
||||||
|
<h3 id="where-is-gitea">where is gitea</h3> |
||||||
|
<p>The wisko gitea instance is installed to <code>$GOPATH/src/code.gitea.io/gitea</code> and there is a symlink to this directory at <code>~/gitea</code>.</p> |
||||||
|
<p>This directory is actually a cloned git repo, so you can see what files you've modified from the default by running a <code>git status</code>.</p> |
||||||
|
<p>The binary is in that folder, at <code>bin/gitea</code>.</p> |
||||||
|
<h3 id="where-is-go">where is go</h3> |
||||||
|
<p>Go is installed using <code>goenv</code>, so the global version of go that goenv will set can be printed using:</p> |
||||||
|
<pre><code>goenv global |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>You can verify you have the goenv go installed by running:</p> |
||||||
|
<pre><code>which go |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>which should return <code>~/.goenv/shims/go</code>, and </p> |
||||||
|
<pre><code>go version |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>which should return 1.7.5.</p> |
||||||
|
<h2 id="task-summary">task summary</h2> |
||||||
|
<p>Making gitea available via the subdomain <code>git.smallmelo.com</code> requires setting up a couple of components: |
||||||
|
<em> subdomain |
||||||
|
</em> web server to handle redirects |
||||||
|
<em> gitea configuration to tell gitea where it is hosted |
||||||
|
</em> https certificates valid for the subdomain</p> |
||||||
|
<h2 id="set-up-git-subdomain">set up git subdomain</h2> |
||||||
|
<p>First thing is, we need to set up the subdomain <code>git.smallmelo.com</code> to redirect to the server. This depends on the hosting provider, but should be an A Name Record:</p> |
||||||
|
<p><strong>A Record</strong>:</p> |
||||||
|
<ul> |
||||||
|
<li>Record: git</li> |
||||||
|
<li>Value: <your ip address></li> |
||||||
|
</ul> |
||||||
|
<h2 id="apache-web-server-settings">apache web server settings</h2> |
||||||
|
<p>Setting up a name record for the subdomain will result in requests for "git.smallmelo.com" and "smallmelo.com" to both go to your server. The server will be able to see what domain/subdomain was requested in each request, so we need to set up rules to handle the subdomain correctly.</p> |
||||||
|
<p>If the git subdomain is not set up with the DNS provider yet, you can still test it locally. From whatever machine you're connecting to wisk as, add an entry to <code>/etc/hosts</code> that will map the subdomain to wisko's IP:</p> |
||||||
|
<pre><code>vim /etc/hosts |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>and add</p> |
||||||
|
<pre><code>159.65.75.41 git.smallmelo.com |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>(Do this on your machine, not on wisko.)</p> |
||||||
|
<h3 id="apache-configuration-http">apache configuration: http</h3> |
||||||
|
<p>Now we'll set up the Apache web server to redirect any http requests to <code>git.smallmelo.com</code> on port 80 on to gitea at port 3000.</p> |
||||||
|
<p>Create a new apache config for this site at <code>/etc/apache2/sites-available/git-smallmelo.conf</code> that will contain all our settings. Set up a listener on port 80, all interfaces, that looks for requests to <code>git.smallmelo.com</code>:</p> |
||||||
|
<p><strong><code>/etc/apache2/sites-available/git-smallmelo.conf</code></strong>:</p> |
||||||
|
<pre><code><VirtualHost *:80> |
||||||
|
ServerName git.smallmelo.com |
||||||
|
ServerAdmin melo@smallmelo.com |
||||||
|
|
||||||
|
# ------------------------- |
||||||
|
# Need to enable the following mods: |
||||||
|
# a2enmod proxy |
||||||
|
# a2enmod proxy_http |
||||||
|
|
||||||
|
# Preserve original request (git.smallmelo.com) |
||||||
|
ProxyPreserveHost On |
||||||
|
|
||||||
|
# Set up proxy |
||||||
|
<Proxy *> |
||||||
|
Order allow,deny |
||||||
|
Allow from all |
||||||
|
</Proxy> |
||||||
|
ProxyPass / http://localhost:3000/ |
||||||
|
ProxyPassReverse / http://localhost:3000/ |
||||||
|
|
||||||
|
# ------------------------- |
||||||
|
|
||||||
|
ErrorLog ${APACHE_LOG_DIR}/git-smallmelo-error.log |
||||||
|
CustomLog ${APACHE_LOG_DIR}/git-smallmelo-access.log combined |
||||||
|
|
||||||
|
# Note that we don't set a document root |
||||||
|
# or permissions for a web directory |
||||||
|
# because we're just forwarding traffic |
||||||
|
# to gitea, which runs an entirely separate |
||||||
|
# web server. |
||||||
|
|
||||||
|
</VirtualHost> |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<h3 id="apache-configuration-https">apache configuration: https</h3> |
||||||
|
<p>We also need to set up Apache to redirect https requests to <code>git.smallmelo.com</code> on port 443 to gitea at port 3000.</p> |
||||||
|
<p>This will require an HTTPS certificate for <code>git.smallmelo.com</code>, so fire up lets encrypt.</p> |
||||||
|
<h3 id="making-apache-certificate">making apache certificate</h3> |
||||||
|
<p>Create an https apache config for this site at <code>/etc/apache2/sites-available/git-smallmelo-le-ssl.conf</code> that will contain all our settings. Set up a listener on port 443, all interfaces, that looks for requests to <code>git.smallmelo.com</code>.</p> |
||||||
|
<p>Run the certbot:</p> |
||||||
|
<pre><code>$ sudo certbot certonly --non-interactive --agree-tos --email "melo@smallmelo.com" --apache -d "git.smallmelo.com" |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>This will take a minute, but should conclude with:</p> |
||||||
|
<pre><code>IMPORTANT NOTES: |
||||||
|
- Congratulations! Your certificate and chain have been saved at: |
||||||
|
/etc/letsencrypt/live/git.smallmelo.com/fullchain.pem |
||||||
|
Your key file has been saved at: |
||||||
|
/etc/letsencrypt/live/git.smallmelo.com/privkey.pem |
||||||
|
Your cert will expire on 2018-06-24. To obtain a new or tweaked |
||||||
|
version of this certificate in the future, simply run certbot |
||||||
|
again. To non-interactively renew *all* of your certificates, run |
||||||
|
"certbot renew" |
||||||
|
- If you like Certbot, please consider supporting our work by: |
||||||
|
|
||||||
|
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate |
||||||
|
Donating to EFF: https://eff.org/donate-le |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<h3 id="apache-configuration-https-revisited">apache configuration: https (revisited)</h3> |
||||||
|
<p>Note that once the HTTPS request hits the server, the proxy does not need to happen over HTTPS since it happens within a single machine.</p> |
||||||
|
<p><strong><code>/etc/apache2/sites-available/git-smallmelo-le-ssl.conf</code></strong>:</p> |
||||||
|
<pre><code><IfModule mod_ssl.c> |
||||||
|
<VirtualHost *:443> |
||||||
|
ServerName git.smallmelo.com |
||||||
|
ServerAdmin melo@smallmelo.com |
||||||
|
|
||||||
|
ErrorLog ${APACHE_LOG_DIR}/git-smallmelo-ssl-error.log |
||||||
|
CustomLog ${APACHE_LOG_DIR}/git-smallmelo-ssl-access.log combined |
||||||
|
|
||||||
|
# ------------------------- |
||||||
|
# Need to enable the following mods: |
||||||
|
|
||||||
|
# a2enmod proxy |
||||||
|
# a2enmod proxy_http |
||||||
|
|
||||||
|
SSLEngine on |
||||||
|
SSLProxyEngine On |
||||||
|
Include /etc/letsencrypt/options-ssl-apache.conf |
||||||
|
SSLCertificateFile /etc/letsencrypt/live/git.smallmelo.com/fullchain.pem |
||||||
|
SSLCertificateKeyFile /etc/letsencrypt/live/git.smallmelo.com/privkey.pem |
||||||
|
|
||||||
|
# Preserve original request (git.smallmelo.com) |
||||||
|
ProxyPreserveHost On |
||||||
|
|
||||||
|
# Set up proxy |
||||||
|
<Proxy *> |
||||||
|
Order allow,deny |
||||||
|
Allow from all |
||||||
|
</Proxy> |
||||||
|
ProxyPass / http://localhost:3000/ |
||||||
|
ProxyPassReverse / http://localhost:3000/ |
||||||
|
|
||||||
|
# ------------------------- |
||||||
|
|
||||||
|
</VirtualHost> |
||||||
|
</IfModule> |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<h3 id="enable-and-activate">enable and activate</h3> |
||||||
|
<p>Now enable the mods:</p> |
||||||
|
<pre><code>a2enmod proxy |
||||||
|
a2enmod proxy_http |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>Now enable the site:</p> |
||||||
|
<pre><code>a2ensite git-smallmelo |
||||||
|
a2ensite git-smallmelo-le-ssl |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>Now activate the site:</p> |
||||||
|
<pre><code>service apache2 reload |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>Once the A Name DNS record propagates, you can test out the Apache configuration.</p> |
||||||
|
<p>Run a dummy HTTP web server on port 3000:</p> |
||||||
|
<pre><code>cat "<h2>hello world</h2>" > index.html |
||||||
|
python3 -m http.server 3000 |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>Now if you visit the subdomain:</p> |
||||||
|
<pre><code>http://git.smallmelo.com |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>you should see a hit in the window running the HTTP server on port 3000.</p> |
||||||
|
<h2 id="gitea-configuration">gitea configuration</h2> |
||||||
|
<h3 id="gitea-version">gitea version</h3> |
||||||
|
<p>Start out by checking which version of gitea you have. We have checked out release <code>1.2</code>, which means that our git repo is in a "headless" state. Any changes that we make are going to go into a dead end.</p> |
||||||
|
<p>But that's perfect - we can keep track of all our changes relative to version 1.2, and revert any changes we don't want anymore.</p> |
||||||
|
<p>Make the following changes to the default <code>app.ini</code> gitea config file:</p> |
||||||
|
<pre><code>RUN_USER = melo |
||||||
|
|
||||||
|
DOMAIN = git.smallmelo.com |
||||||
|
ROOT_URL = %(PROTOCOL)s://%(DOMAIN)s/ |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>(Note, you can use git diff to pick up the changes in the file.)</p> |
||||||
|
<p>Kill any instances of gitea that are already running on port 3000, and start up the gitea server:</p> |
||||||
|
<pre><code>cd ~/gitea |
||||||
|
./gitea web |
||||||
|
</code></pre> |
||||||
|
|
||||||
|
<p>(or, do it in a screen, <a href="../boot2root/">as mentioned in the wisko boot to root doc</a>).</p> |
||||||
|
<h2 id="https-certs">https certs</h2> |
||||||
|
<p>See the above modifications to the document about certificates. A new SSL certificate for the git subdomain (<code>git.smallmelo.com</code>) was needed, so we used certbot to make it.</p> |
||||||
|
<p>To explain the HTTPS certificate setup for git.smallmelo.com a bit more:</p> |
||||||
|
<ul> |
||||||
|
<li>Gitea runs its own web server, hosts its own files, and does not require an Apache server to run. We're just using Apache for convenience.</li> |
||||||
|
<li>Just as HTTP requests to smallmelo.com always go to port 80, where there is an Apache server listening, HTTPS requests to smallmelo.com always go to port 443, where there is also an Apache server listening</li> |
||||||
|
<li>HTTPS requests are handled by the Apache web server, so the certificates to create an encrypted session are handled by the Apache web server</li> |
||||||
|
<li>Apache must have an SSL certifiate for <code>git.smallmelo.com</code> to make the connection, or the browser will complain that the server is not configured correctly</li> |
||||||
|
<li>When we make a request for a gitea resource (say, <code>https://git.smallmelo.com/melo/my-cool-project</code>), the subdomain tells Apache where to forward the request (to gitea on port 3000), and the rest of the url (<code>/melo/my-cool-project</code>) is passed on to gitea, unmodified</li> |
||||||
|
<li>The request from Apache to gitea happens on a single machine, so the connection does not need to be encrypted, hence Apache's proxy requests go to <code>http://localhost:3000</code> and not <code>https://localhost:3000</code></li> |
||||||
|
</ul> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</article> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</main> |
||||||
|
|
||||||
|
|
||||||
|
<footer class="md-footer"> |
||||||
|
|
||||||
|
<div class="md-footer-nav"> |
||||||
|
<nav class="md-footer-nav__inner md-grid"> |
||||||
|
|
||||||
|
<a href="../smallmelo-migration-3/" title="smallmelo.com Migration: Part 3" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
<i class="md-icon md-icon--arrow-back md-footer-nav__button"></i> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"> |
||||||
|
<span class="md-flex__ellipsis"> |
||||||
|
<span class="md-footer-nav__direction"> |
||||||
|
Previous |
||||||
|
</span> |
||||||
|
smallmelo.com Migration: Part 3 |
||||||
|
</span> |
||||||
|
</div> |
||||||
|
</a> |
||||||
|
|
||||||
|
|
||||||
|
<a href="../geoserver-https/" title="Connecting to Geoserver Over HTTPS" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"> |
||||||
|
<div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"> |
||||||
|
<span class="md-flex__ellipsis"> |
||||||
|
<span class="md-footer-nav__direction"> |
||||||
|
Next |
||||||
|
</span> |
||||||
|
Connecting to Geoserver Over HTTPS |
||||||
|
</span> |
||||||
|
</div> |
||||||
|
<div class="md-flex__cell md-flex__cell--shrink"> |
||||||
|
<i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i> |
||||||
|
</div> |
||||||
|
</a> |
||||||
|
|
||||||
|
</nav> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="md-footer-meta md-typeset"> |
||||||
|
<div class="md-footer-meta__inner md-grid"> |
||||||
|
<div class="md-footer-copyright"> |
||||||
|
|
||||||
|
<div class="md-footer-copyright__highlight"> |
||||||
|
Copyright 2018 Charles Reid |
||||||
|
</div> |
||||||
|
|
||||||
|
powered by |
||||||
|
<a href="http://www.mkdocs.org">MkDocs</a> |
||||||
|
and |
||||||
|
<a href="https://squidfunk.github.io/mkdocs-material/"> |
||||||
|
Material for MkDocs</a> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div> |
||||||
|
</div> |
||||||
|
</footer> |
||||||
|
|
||||||
|
</div> |
||||||
|
|
||||||
|
<script src="../assets/javascripts/application.0cf9b500.js"></script> |
||||||
|
|
||||||
|
<script>app.initialize({version:"0.17.3",url:{base:".."}})</script> |
||||||
|
|
||||||
|
<script src="../search/require.js"></script> |
||||||
|
|
||||||
|
<script src="../search/search.js"></script> |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body> |
||||||
|
</html> |
Loading…
Reference in new issue