[{"data":1,"prerenderedAt":1296},["ShallowReactive",2],{"blog-\u002Fen\u002Fblog\u002Finstallation-serveur-firefox-sync":3,"blog-\u002Fen\u002Fblog\u002Finstallation-serveur-firefox-sync-surround":1240,"blog-\u002Fen\u002Fblog\u002Finstallation-serveur-firefox-sync-certifications":1295},{"id":4,"title":5,"body":6,"categories":1228,"cover":1229,"cover_contain":1230,"credly_badge_id":1228,"date":1231,"description":1232,"extension":1233,"meta":1234,"navigation":1230,"path":1235,"related_certifications":1228,"seo":1236,"slug":1237,"stem":1238,"__hash__":1239},"blog\u002Fen\u002Fblog\u002Finstallation-serveur-firefox-sync.md","Installing a Firefox Sync Server",{"type":7,"value":8,"toc":1218},"minimark",[9,14,18,48,52,71,110,127,131,134,172,175,215,218,230,234,237,250,253,270,275,278,283,285,296,299,314,321,424,431,444,447,459,463,466,470,472,475,488,514,520,566,572,633,642,646,649,662,668,701,704,717,720,750,754,766,769,1076,1079,1095,1098,1110,1124,1161,1165,1180,1186,1193,1198,1207,1211,1214],[10,11,13],"h2",{"id":12},"real-world-use-case","Real-world use case",[15,16,17],"p",{},"You want to sync your Firefox data without relying on Mozilla's servers: here's how to install your own Firefox Sync server.",[15,19,20,24,25,28,29,32,33,36,37,40,41,44,45,36],{},[21,22,23],"strong",{},"Mozilla"," offers a performant, free \"",[21,26,27],{},"Sync","\" ",[21,30,31],{},"service"," on their own servers, but Mozilla also gives us the option to create our own ",[21,34,35],{},"personal sync server",".",[38,39],"br",{},"\nIn this article, the personal ",[21,42,43],{},"Firefox Sync"," server is installed on ",[21,46,47],{},"Debian 7",[10,49,51],{"id":50},"introduction-to-firefox-sync","Introduction to Firefox Sync",[15,53,54,55,58,59,62,63,66,67,70],{},"A personal Firefox Sync server lets you ",[21,56,57],{},"back up"," your entire ",[21,60,61],{},"Firefox browser"," ",[21,64,65],{},"configuration"," via ",[21,68,69],{},"synchronizing"," the following items:",[72,73,74,80,85,90,95,100,105],"ul",{},[75,76,77],"li",{},[21,78,79],{},"Bookmarks",[75,81,82],{},[21,83,84],{},"Browsing history",[75,86,87],{},[21,88,89],{},"Preferences",[75,91,92],{},[21,93,94],{},"Passwords",[75,96,97],{},[21,98,99],{},"Pre-filled forms",[75,101,102],{},[21,103,104],{},"Recently opened tabs",[75,106,107],{},[21,108,109],{},"Add-ons",[15,111,112,113,115,116,119,120,122,123,126],{},"Your entire ",[21,114,65],{}," will now stay with you, and your ",[21,117,118],{},"data"," is in your hands.",[38,121],{},"\nHandy if you have ",[21,124,125],{},"several devices"," (smartphone, laptop, desktop PC)!",[10,128,130],{"id":129},"installing-firefox-sync","Installing Firefox Sync",[15,132,133],{},"Downloading the prerequisites:",[135,136,141],"pre",{"className":137,"code":138,"language":139,"meta":140,"style":140},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","apt-get install python-dev mercurial sqlite3 python-virtualenv libssl-dev\n","bash","",[142,143,144],"code",{"__ignoreMap":140},[145,146,149,153,157,160,163,166,169],"span",{"class":147,"line":148},"line",1,[145,150,152],{"class":151},"sBMFI","apt-get",[145,154,156],{"class":155},"sfazB"," install",[145,158,159],{"class":155}," python-dev",[145,161,162],{"class":155}," mercurial",[145,164,165],{"class":155}," sqlite3",[145,167,168],{"class":155}," python-virtualenv",[145,170,171],{"class":155}," libssl-dev\n",[15,173,174],{},"Downloading the personal Firefox Sync server:",[135,176,178],{"className":137,"code":177,"language":139,"meta":140,"style":140},"cd \u002Fvar\u002Fwww\u002F\nclone https:\u002F\u002Fhg.mozilla.org\u002Fservices\u002Fserver-full\ncd server-full\nmake build\n",[142,179,180,189,198,206],{"__ignoreMap":140},[145,181,182,186],{"class":147,"line":148},[145,183,185],{"class":184},"s2Zo4","cd",[145,187,188],{"class":155}," \u002Fvar\u002Fwww\u002F\n",[145,190,192,195],{"class":147,"line":191},2,[145,193,194],{"class":151},"clone",[145,196,197],{"class":155}," https:\u002F\u002Fhg.mozilla.org\u002Fservices\u002Fserver-full\n",[145,199,201,203],{"class":147,"line":200},3,[145,202,185],{"class":184},[145,204,205],{"class":155}," server-full\n",[145,207,209,212],{"class":147,"line":208},4,[145,210,211],{"class":151},"make",[145,213,214],{"class":155}," build\n",[15,216,217],{},"Running a test to make sure everything works:",[135,219,221],{"className":137,"code":220,"language":139,"meta":140,"style":140},"make test\n",[142,222,223],{"__ignoreMap":140},[145,224,225,227],{"class":147,"line":148},[145,226,211],{"class":151},[145,228,229],{"class":155}," test\n",[10,231,233],{"id":232},"configuring-firefox-sync","Configuring Firefox Sync:",[15,235,236],{},"Head to the configuration file:",[135,238,240],{"className":137,"code":239,"language":139,"meta":140,"style":140},"nano etc\u002Fsync.conf\n",[142,241,242],{"__ignoreMap":140},[145,243,244,247],{"class":147,"line":148},[145,245,246],{"class":151},"nano",[145,248,249],{"class":155}," etc\u002Fsync.conf\n",[15,251,252],{},"The lines to change are:",[135,254,258],{"className":255,"code":256,"language":257,"meta":140,"style":140},"language-ini shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[nodes]\nfallback_node = http:\u002F\u002Fyour_dns_name:5000\u002F\n","ini",[142,259,260,265],{"__ignoreMap":140},[145,261,262],{"class":147,"line":148},[145,263,264],{},"[nodes]\n",[145,266,267],{"class":147,"line":191},[145,268,269],{},"fallback_node = http:\u002F\u002Fyour_dns_name:5000\u002F\n",[15,271,272],{},[145,273,274],{},"storage",[15,276,277],{},"sqluri = sqlite:\u002F\u002F\u002F\u002Fpath\u002Fto\u002Fyour_database\u002Ffile_name.db",[15,279,280],{},[145,281,282],{},"auth",[15,284,277],{},[15,286,287,288,291,292,295],{},"By default, the Firefox Sync server uses ",[21,289,290],{},"SQLite",", but if you want to use ",[21,293,294],{},"MySQL",", here's the procedure:",[15,297,298],{},"Installing MySQL:",[135,300,302],{"className":137,"code":301,"language":139,"meta":140,"style":140},"apt-get insall mysql-server\n",[142,303,304],{"__ignoreMap":140},[145,305,306,308,311],{"class":147,"line":148},[145,307,152],{"class":151},[145,309,310],{"class":155}," insall",[145,312,313],{"class":155}," mysql-server\n",[15,315,316,317,320],{},"Adding a ",[21,318,319],{},"database"," in MySQL:",[135,322,324],{"className":137,"code":323,"language":139,"meta":140,"style":140},"# mysql -u root -p\nmysql> create database ffsync;\nmysql> grant all on sync.* to sync identified by 'my_password';\nmysql> flush privileges;\nmysql> exit;\n",[142,325,326,332,354,398,412],{"__ignoreMap":140},[145,327,328],{"class":147,"line":148},[145,329,331],{"class":330},"sHwdD","# mysql -u root -p\n",[145,333,334,337,341,344,347,350],{"class":147,"line":191},[145,335,336],{"class":151},"mysql",[145,338,340],{"class":339},"sTEyZ","> ",[145,342,343],{"class":155},"create",[145,345,346],{"class":155}," database",[145,348,349],{"class":155}," ffsync",[145,351,353],{"class":352},"sMK4o",";\n",[145,355,356,358,360,363,366,369,372,375,378,381,384,387,390,393,396],{"class":147,"line":200},[145,357,336],{"class":151},[145,359,340],{"class":339},[145,361,362],{"class":155},"grant",[145,364,365],{"class":155}," all",[145,367,368],{"class":155}," on",[145,370,371],{"class":155}," sync.",[145,373,374],{"class":339},"*",[145,376,377],{"class":155}," to",[145,379,380],{"class":155}," sync",[145,382,383],{"class":155}," identified",[145,385,386],{"class":155}," by",[145,388,389],{"class":352}," '",[145,391,392],{"class":155},"my_password",[145,394,395],{"class":352},"'",[145,397,353],{"class":352},[145,399,400,402,404,407,410],{"class":147,"line":208},[145,401,336],{"class":151},[145,403,340],{"class":339},[145,405,406],{"class":155},"flush",[145,408,409],{"class":155}," privileges",[145,411,353],{"class":352},[145,413,415,417,419,422],{"class":147,"line":414},5,[145,416,336],{"class":151},[145,418,340],{"class":339},[145,420,421],{"class":155},"exit",[145,423,353],{"class":352},[15,425,426,427,430],{},"Installing \"",[21,428,429],{},"mysql-python","\" in the server-full folder:",[135,432,434],{"className":137,"code":433,"language":139,"meta":140,"style":140},"bin\u002Feasy_install Mysql-Python\n",[142,435,436],{"__ignoreMap":140},[145,437,438,441],{"class":147,"line":148},[145,439,440],{"class":151},"bin\u002Feasy_install",[145,442,443],{"class":155}," Mysql-Python\n",[15,445,446],{},"Changing the configuration file for MySQL:",[135,448,449],{"className":255,"code":256,"language":257,"meta":140,"style":140},[142,450,451,455],{"__ignoreMap":140},[145,452,453],{"class":147,"line":148},[145,454,264],{},[145,456,457],{"class":147,"line":191},[145,458,269],{},[15,460,461],{},[145,462,274],{},[15,464,465],{},"sqluri = mysql:\u002F\u002F\u002F\u002Fffsync:my_password@localhost\u002Fffsync",[15,467,468],{},[145,469,282],{},[15,471,465],{},[15,473,474],{},"End of the configuration file setup with MySQL.",[15,476,477,478,481,482,484],{},"In your configuration file, the following line allows ",[21,479,480],{},"user creation",":",[38,483],{},[485,486,487],"em",{},"(As soon as your users are added, I recommend quickly setting it to \"false\".)",[135,489,491],{"className":137,"code":490,"language":139,"meta":140,"style":140}," [auth]\nallow_new_users=true\n",[142,492,493,503],{"__ignoreMap":140},[145,494,495,498,500],{"class":147,"line":148},[145,496,497],{"class":352}," [",[145,499,282],{"class":339},[145,501,502],{"class":352},"]\n",[145,504,505,508,511],{"class":147,"line":191},[145,506,507],{"class":339},"allow_new_users",[145,509,510],{"class":352},"=",[145,512,513],{"class":155},"true\n",[15,515,516,517,481],{},"Sending an email for ",[21,518,519],{},"Firefox Sync password recovery",[135,521,523],{"className":137,"code":522,"language":139,"meta":140,"style":140}," [smtp]\nhost = localhost\nport = 25\nsender = firefox@kassianoff.fr\n",[142,524,525,534,545,556],{"__ignoreMap":140},[145,526,527,529,532],{"class":147,"line":148},[145,528,497],{"class":352},[145,530,531],{"class":339},"smtp",[145,533,502],{"class":352},[145,535,536,539,542],{"class":147,"line":191},[145,537,538],{"class":151},"host",[145,540,541],{"class":155}," =",[145,543,544],{"class":155}," localhost\n",[145,546,547,550,552],{"class":147,"line":200},[145,548,549],{"class":151},"port",[145,551,541],{"class":155},[145,553,555],{"class":554},"sbssI"," 25\n",[145,557,558,561,563],{"class":147,"line":208},[145,559,560],{"class":151},"sender",[145,562,541],{"class":155},[145,564,565],{"class":155}," firefox@kassianoff.fr\n",[15,567,568,569,481],{},"Starting the ",[21,570,571],{},"Firefox Sync server",[135,573,575],{"className":137,"code":574,"language":139,"meta":140,"style":140},"bin\u002Fpaster serve development.ini\n==> Starting server in PID 29951.\n==> serving on 0.0.0.0:5000 view at http:\u002F\u002F127.0.0.1:5000\n",[142,576,577,588,610],{"__ignoreMap":140},[145,578,579,582,585],{"class":147,"line":148},[145,580,581],{"class":151},"bin\u002Fpaster",[145,583,584],{"class":155}," serve",[145,586,587],{"class":155}," development.ini\n",[145,589,590,593,595,598,601,604,607],{"class":147,"line":191},[145,591,592],{"class":155},"==",[145,594,340],{"class":339},[145,596,597],{"class":155},"Starting",[145,599,600],{"class":155}," server",[145,602,603],{"class":155}," in",[145,605,606],{"class":155}," PID",[145,608,609],{"class":155}," 29951.\n",[145,611,612,614,616,619,621,624,627,630],{"class":147,"line":200},[145,613,592],{"class":155},[145,615,340],{"class":339},[145,617,618],{"class":155},"serving",[145,620,368],{"class":155},[145,622,623],{"class":155}," 0.0.0.0:5000",[145,625,626],{"class":155}," view",[145,628,629],{"class":155}," at",[145,631,632],{"class":155}," http:\u002F\u002F127.0.0.1:5000\n",[15,634,635,636,638,639,36],{},"The server is working! However, the task needs to be started manually.",[38,637],{},"\nLet's see how to automate the task with a ",[21,640,641],{},"system startup script",[10,643,645],{"id":644},"creating-a-group-and-a-user-to-launch-the-script","Creating a group and a user to launch the script:",[15,647,648],{},"Creating a group to launch Firefox Sync:",[135,650,652],{"className":137,"code":651,"language":139,"meta":140,"style":140},"groupadd sync\n",[142,653,654],{"__ignoreMap":140},[145,655,656,659],{"class":147,"line":148},[145,657,658],{"class":151},"groupadd",[145,660,661],{"class":155}," sync\n",[15,663,664,665,481],{},"Creating a user in the \"sync\" group to ",[21,666,667],{},"launch Firefox Sync",[135,669,671],{"className":137,"code":670,"language":139,"meta":140,"style":140},"useradd -d \u002Fvar\u002Fwww\u002Fserver-full -g sync -r -s \u002Fbin\u002Fbash firefox\n",[142,672,673],{"__ignoreMap":140},[145,674,675,678,681,684,687,689,692,695,698],{"class":147,"line":148},[145,676,677],{"class":151},"useradd",[145,679,680],{"class":155}," -d",[145,682,683],{"class":155}," \u002Fvar\u002Fwww\u002Fserver-full",[145,685,686],{"class":155}," -g",[145,688,380],{"class":155},[145,690,691],{"class":155}," -r",[145,693,694],{"class":155}," -s",[145,696,697],{"class":155}," \u002Fbin\u002Fbash",[145,699,700],{"class":155}," firefox\n",[15,702,703],{},"Creating a log folder for firefox:",[135,705,707],{"className":137,"code":706,"language":139,"meta":140,"style":140},"mkdir \u002Fvar\u002Flog\u002Ffirefox\n",[142,708,709],{"__ignoreMap":140},[145,710,711,714],{"class":147,"line":148},[145,712,713],{"class":151},"mkdir",[145,715,716],{"class":155}," \u002Fvar\u002Flog\u002Ffirefox\n",[15,718,719],{},"Granting permissions on the \"server-full\" and \"\u002Fvar\u002Flog\u002Ffirefox\" folders:",[135,721,723],{"className":137,"code":722,"language":139,"meta":140,"style":140},"chown -R firefox:sync \u002Fvar\u002Fwww\u002Fserver-full && chown -R firefox:sync \u002Fvar\u002Flog\u002Ffirefox\n",[142,724,725],{"__ignoreMap":140},[145,726,727,730,733,736,738,741,744,746,748],{"class":147,"line":148},[145,728,729],{"class":151},"chown",[145,731,732],{"class":155}," -R",[145,734,735],{"class":155}," firefox:sync",[145,737,683],{"class":155},[145,739,740],{"class":352}," &&",[145,742,743],{"class":151}," chown",[145,745,732],{"class":155},[145,747,735],{"class":155},[145,749,716],{"class":155},[10,751,753],{"id":752},"creating-the-firefox-sync-startup-script","Creating the Firefox Sync startup script:",[135,755,757],{"className":137,"code":756,"language":139,"meta":140,"style":140},"nano \u002Fetc\u002Finit.d\u002Fffsync.sh\n",[142,758,759],{"__ignoreMap":140},[145,760,761,763],{"class":147,"line":148},[145,762,246],{"class":151},[145,764,765],{"class":155}," \u002Fetc\u002Finit.d\u002Fffsync.sh\n",[15,767,768],{},"Write the following in the file:",[135,770,772],{"className":137,"code":771,"language":139,"meta":140,"style":140}," #!\u002Fbin\u002Fbash\n \n### BEGIN INIT INFO\n# Provides:          Mozilla Sync HomeServer\n# Required-Start:    $syslog $network\n# Required-Stop:     $syslog $network\n# Default-Start:     2 3 4 5\n# Default-Stop:      0 1 6\n# Short-Description: Mozilla Sync HomeServer initscript\n# Description:       Mozilla Sync HomeServer\n### END INIT INFO\nMESSAGELOG=\u002Fvar\u002Flog\u002Ffirefox\u002Fsync-messages.log\nPID=`pidof -x -o %PPID paster`\ncase \"$1\" in\n  start)\n    echo \"Starting Mozilla Sync HomeServer\"\n    [ ! -d $MESSAGEDIR ] && mkdir -p $MESSAGEDIR\n    su firefox -c \"cd \u002Fvar\u002Fwww\u002Fserver-full\u002F && bin\u002Fpaster serve development.ini &>$MESSAGELOG &\"\n    ;;\n  stop)\n    echo \"Stopping Mozilla Sync HomeServer\"\n    kill $PID &>\u002Fdev\u002Fnull\n    ;;\n  restart)\n    $0 stop\n    $0 start\n    ;;\n  *)\n    echo \"usage: $0 {start|stop|restart}\"\nesac\nexit 0\n",[142,773,774,779,784,789,794,799,805,811,817,823,829,835,846,866,886,895,909,937,962,968,976,988,1003,1008,1016,1025,1033,1038,1044,1062,1068],{"__ignoreMap":140},[145,775,776],{"class":147,"line":148},[145,777,778],{"class":330}," #!\u002Fbin\u002Fbash\n",[145,780,781],{"class":147,"line":191},[145,782,783],{"class":339}," \n",[145,785,786],{"class":147,"line":200},[145,787,788],{"class":330},"### BEGIN INIT INFO\n",[145,790,791],{"class":147,"line":208},[145,792,793],{"class":330},"# Provides:          Mozilla Sync HomeServer\n",[145,795,796],{"class":147,"line":414},[145,797,798],{"class":330},"# Required-Start:    $syslog $network\n",[145,800,802],{"class":147,"line":801},6,[145,803,804],{"class":330},"# Required-Stop:     $syslog $network\n",[145,806,808],{"class":147,"line":807},7,[145,809,810],{"class":330},"# Default-Start:     2 3 4 5\n",[145,812,814],{"class":147,"line":813},8,[145,815,816],{"class":330},"# Default-Stop:      0 1 6\n",[145,818,820],{"class":147,"line":819},9,[145,821,822],{"class":330},"# Short-Description: Mozilla Sync HomeServer initscript\n",[145,824,826],{"class":147,"line":825},10,[145,827,828],{"class":330},"# Description:       Mozilla Sync HomeServer\n",[145,830,832],{"class":147,"line":831},11,[145,833,834],{"class":330},"### END INIT INFO\n",[145,836,838,841,843],{"class":147,"line":837},12,[145,839,840],{"class":339},"MESSAGELOG",[145,842,510],{"class":352},[145,844,845],{"class":155},"\u002Fvar\u002Flog\u002Ffirefox\u002Fsync-messages.log\n",[145,847,849,852,854,857,860,863],{"class":147,"line":848},13,[145,850,851],{"class":339},"PID",[145,853,510],{"class":352},[145,855,856],{"class":352},"`",[145,858,859],{"class":151},"pidof",[145,861,862],{"class":155}," -x -o %PPID paster",[145,864,865],{"class":352},"`\n",[145,867,869,873,876,880,883],{"class":147,"line":868},14,[145,870,872],{"class":871},"s7zQu","case",[145,874,875],{"class":352}," \"",[145,877,879],{"class":878},"sHdIc","$1",[145,881,882],{"class":352},"\"",[145,884,885],{"class":871}," in\n",[145,887,889,892],{"class":147,"line":888},15,[145,890,891],{"class":155},"  start",[145,893,894],{"class":352},")\n",[145,896,898,901,903,906],{"class":147,"line":897},16,[145,899,900],{"class":184},"    echo",[145,902,875],{"class":352},[145,904,905],{"class":155},"Starting Mozilla Sync HomeServer",[145,907,908],{"class":352},"\"\n",[145,910,912,915,918,920,923,926,928,931,934],{"class":147,"line":911},17,[145,913,914],{"class":352},"    [",[145,916,917],{"class":352}," !",[145,919,680],{"class":352},[145,921,922],{"class":339}," $MESSAGEDIR ",[145,924,925],{"class":352},"]",[145,927,740],{"class":352},[145,929,930],{"class":151}," mkdir",[145,932,933],{"class":155}," -p",[145,935,936],{"class":339}," $MESSAGEDIR\n",[145,938,940,943,946,949,951,954,957,960],{"class":147,"line":939},18,[145,941,942],{"class":151},"    su",[145,944,945],{"class":155}," firefox",[145,947,948],{"class":155}," -c",[145,950,875],{"class":352},[145,952,953],{"class":155},"cd \u002Fvar\u002Fwww\u002Fserver-full\u002F && bin\u002Fpaster serve development.ini &>",[145,955,956],{"class":339},"$MESSAGELOG",[145,958,959],{"class":155}," &",[145,961,908],{"class":352},[145,963,965],{"class":147,"line":964},19,[145,966,967],{"class":352},"    ;;\n",[145,969,971,974],{"class":147,"line":970},20,[145,972,973],{"class":155},"  stop",[145,975,894],{"class":352},[145,977,979,981,983,986],{"class":147,"line":978},21,[145,980,900],{"class":184},[145,982,875],{"class":352},[145,984,985],{"class":155},"Stopping Mozilla Sync HomeServer",[145,987,908],{"class":352},[145,989,991,994,997,1000],{"class":147,"line":990},22,[145,992,993],{"class":184},"    kill",[145,995,996],{"class":339}," $PID ",[145,998,999],{"class":352},"&>",[145,1001,1002],{"class":151},"\u002Fdev\u002Fnull\n",[145,1004,1006],{"class":147,"line":1005},23,[145,1007,967],{"class":352},[145,1009,1011,1014],{"class":147,"line":1010},24,[145,1012,1013],{"class":155},"  restart",[145,1015,894],{"class":352},[145,1017,1019,1022],{"class":147,"line":1018},25,[145,1020,1021],{"class":878},"    $0",[145,1023,1024],{"class":155}," stop\n",[145,1026,1028,1030],{"class":147,"line":1027},26,[145,1029,1021],{"class":878},[145,1031,1032],{"class":155}," start\n",[145,1034,1036],{"class":147,"line":1035},27,[145,1037,967],{"class":352},[145,1039,1041],{"class":147,"line":1040},28,[145,1042,1043],{"class":352},"  *)\n",[145,1045,1047,1049,1051,1054,1057,1060],{"class":147,"line":1046},29,[145,1048,900],{"class":184},[145,1050,875],{"class":352},[145,1052,1053],{"class":155},"usage: ",[145,1055,1056],{"class":878},"$0",[145,1058,1059],{"class":155}," {start|stop|restart}",[145,1061,908],{"class":352},[145,1063,1065],{"class":147,"line":1064},30,[145,1066,1067],{"class":871},"esac\n",[145,1069,1071,1073],{"class":147,"line":1070},31,[145,1072,421],{"class":184},[145,1074,1075],{"class":554}," 0\n",[15,1077,1078],{},"Making the script executable:",[135,1080,1082],{"className":137,"code":1081,"language":139,"meta":140,"style":140},"chmod +x ffsync.sh\n",[142,1083,1084],{"__ignoreMap":140},[145,1085,1086,1089,1092],{"class":147,"line":148},[145,1087,1088],{"class":151},"chmod",[145,1090,1091],{"class":155}," +x",[145,1093,1094],{"class":155}," ffsync.sh\n",[15,1096,1097],{},"Adding the script to system startup:",[135,1099,1101],{"className":137,"code":1100,"language":139,"meta":140,"style":140},"insserv ffsync.sh\n",[142,1102,1103],{"__ignoreMap":140},[145,1104,1105,1108],{"class":147,"line":148},[145,1106,1107],{"class":151},"insserv",[145,1109,1094],{"class":155},[15,1111,1112,1113,1116,1117,1119,1120,1123],{},"To run a test, nothing beats a ",[21,1114,1115],{},"system reboot","!",[38,1118],{},"\nTo make sure the ",[21,1121,1122],{},"startup"," is working:",[135,1125,1127],{"className":137,"code":1126,"language":139,"meta":140,"style":140},"netstat -tan\n=> tcp  0  0 0.0.0.0:5000  0.0.0.0:*               LISTEN\n",[142,1128,1129,1137],{"__ignoreMap":140},[145,1130,1131,1134],{"class":147,"line":148},[145,1132,1133],{"class":151},"netstat",[145,1135,1136],{"class":155}," -tan\n",[145,1138,1139,1141,1143,1146,1149,1151,1153,1156,1158],{"class":147,"line":191},[145,1140,510],{"class":155},[145,1142,340],{"class":339},[145,1144,1145],{"class":155},"tcp",[145,1147,1148],{"class":554},"  0",[145,1150,1148],{"class":554},[145,1152,623],{"class":155},[145,1154,1155],{"class":155},"  0.0.0.0:",[145,1157,374],{"class":339},[145,1159,1160],{"class":155},"               LISTEN\n",[10,1162,1164],{"id":1163},"configuring-the-firefox-sync-client","Configuring the Firefox Sync client",[15,1166,1167,1168,1171,1172,1175,1176,1179],{},"On ",[21,1169,1170],{},"Windows",", press the \"",[21,1173,1174],{},"ALT","\" key and, in the \"tools\" menu bar, click \"",[21,1177,1178],{},"set up sync","\":",[15,1181,1182],{},[1183,1184],"img",{"alt":140,"src":1185},"\u002Fimages\u002Fblog\u002Finstallation-serveur-firefox-sync\u002F63e461a0d6.png",[15,1187,1188,1189,1192],{},"Select \"",[21,1190,1191],{},"create a new account","\" (example):",[15,1194,1195],{},[1183,1196],{"alt":140,"src":1197},"\u002Fimages\u002Fblog\u002Finstallation-serveur-firefox-sync\u002F12957a4066.png",[15,1199,1200,1201,1203,1204,1206],{},"That's it! Don't forget to disable user registration in the configuration file.",[38,1202],{},"\nThe logs will tell you about any problems that come up (\u002Fvar\u002Flog\u002Ffirefox\u002F).",[38,1205],{},"\nEnjoy your Firefox Sync server.",[10,1208,1210],{"id":1209},"conclusion","Conclusion",[15,1212,1213],{},"I've detailed here setting up a personal Firefox Sync server on Debian 7, with the choice between an SQLite or MySQL database, as well as creating a script to automatically start the service. Self-hosting your browser sync lets you keep control over your bookmarks, passwords, and history rather than depending on Mozilla's servers. Once the account is created on the client side, I recommend quickly disabling open registration for new users to secure the server.",[1215,1216,1217],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":140,"searchDepth":191,"depth":191,"links":1219},[1220,1221,1222,1223,1224,1225,1226,1227],{"id":12,"depth":191,"text":13},{"id":50,"depth":191,"text":51},{"id":129,"depth":191,"text":130},{"id":232,"depth":191,"text":233},{"id":644,"depth":191,"text":645},{"id":752,"depth":191,"text":753},{"id":1163,"depth":191,"text":1164},{"id":1209,"depth":191,"text":1210},null,"\u002Fimages\u002Fblog\u002Finstallation-serveur-firefox-sync\u002Feb09763184.jpg",true,"2013-11-01","Firefox Sync on your personal server! Configuring Firefox Sync with SQLite\u002FMySQL on Debian 7. Requirement: have Firefox and Debian 7.","md",{},"\u002Fen\u002Fblog\u002Finstallation-serveur-firefox-sync",{"title":5,"description":1232},"installation-serveur-firefox-sync","en\u002Fblog\u002Finstallation-serveur-firefox-sync","OdYIEpY8iqdUOisbhyUZ4Co-PDeRl1F9Oh9dJ8zMy2I",[1241,1247,1255,1261,1267,1273,1281,1288],{"title":1242,"path":1243,"stem":1244,"date":1245,"cover":1246,"categories":1228,"children":-1},"Installing a TeamSpeak 3 Server","\u002Fen\u002Fblog\u002Finstallation-serveur-teamspeak","en\u002Fblog\u002Finstallation-serveur-teamspeak","2013-11-24","\u002Fimages\u002Fblog\u002Finstallation-serveur-teamspeak\u002F7048294e7f.png",{"title":1248,"path":1249,"stem":1250,"date":1251,"cover":1252,"categories":1253,"children":-1},"Installing Android 4.4 KitKat on the Nexus 4","\u002Fen\u002Fblog\u002Finstaller-android-kitkat-sur-nexus","en\u002Fblog\u002Finstaller-android-kitkat-sur-nexus","2013-11-17","\u002Fimages\u002Fblog\u002Finstaller-android-kitkat-sur-nexus\u002Fe393bc7fe1.png",[1254],"Google",{"title":1256,"path":1257,"stem":1258,"date":1259,"cover":1260,"categories":1228,"children":-1},"Arch Linux ARM Distribution: Customization","\u002Fen\u002Fblog\u002Fdistribution-arch-linux-arm-personnalisation","en\u002Fblog\u002Fdistribution-arch-linux-arm-personnalisation","2013-11-10","\u002Fimages\u002Fblog\u002Fdistribution-arch-linux-arm-personnalisation\u002Fb426e4efea.png",{"title":1262,"path":1263,"stem":1264,"date":1265,"cover":1266,"categories":1228,"children":-1},"Lost root Password on VMware ESXi 5.x","\u002Fen\u002Fblog\u002Fmot-passe-root-perdu-sur-vmware-esxi","en\u002Fblog\u002Fmot-passe-root-perdu-sur-vmware-esxi","2013-11-02","\u002Fimages\u002Fblog\u002Fmot-passe-root-perdu-sur-vmware-esxi\u002Fd8c6089e77.png",{"title":1268,"path":1269,"stem":1270,"date":1271,"cover":1272,"categories":1228,"children":-1},"Installing Zimbra 8 Open Source Edition","\u002Fen\u002Fblog\u002Finstallation-zimbra-open-source-edition","en\u002Fblog\u002Finstallation-zimbra-open-source-edition","2013-10-24","\u002Fimages\u002Fblog\u002Finstallation-zimbra-open-source-edition\u002F1a88e8245b.jpg",{"title":1274,"path":1275,"stem":1276,"date":1277,"cover":1278,"categories":1279,"children":-1},"iSCSI RPN-SAN with VMware ESXi","\u002Fen\u002Fblog\u002Fblog-iscsi-rpn-san-avec-vmware-esxi","en\u002Fblog\u002Fblog-iscsi-rpn-san-avec-vmware-esxi","2013-10-23","\u002Fimages\u002Fblog\u002Fblog-iscsi-rpn-san-avec-vmware-esxi\u002Fd8c6089e77.png",[1280],"Réseau",{"title":1282,"path":1283,"stem":1284,"date":1285,"cover":1286,"categories":1287,"children":-1},"Configuring a Pseudo-Ethernet Interface with Vyatta","\u002Fen\u002Fblog\u002Fconfiguration-une-pseudo-ethernet-interface-avec-vyatta","en\u002Fblog\u002Fconfiguration-une-pseudo-ethernet-interface-avec-vyatta","2013-10-20","\u002Fimages\u002Fblog\u002Fconfiguration-une-pseudo-ethernet-interface-avec-vyatta\u002Fa44b82e35f.jpg",[1280],{"title":1289,"path":1290,"stem":1291,"date":1292,"cover":1293,"categories":1294,"children":-1},"Configuring VLANs with Vyatta","\u002Fen\u002Fblog\u002Fconfiguration-vlan-avec-vyatta","en\u002Fblog\u002Fconfiguration-vlan-avec-vyatta","2013-10-17","\u002Fimages\u002Fblog\u002Fconfiguration-vlan-avec-vyatta\u002Fa44b82e35f.jpg",[1280],[],1786644892403]