ZeroNet Blogs

Static ZeroNet blogs mirror

Changelog: Jan 29, 2015

- Posted in ZeroBlog by with comments

The default tracker ( is down since yesterday and its resulting some warning messages. To make it disappear please update to latest version from GitHub.

ZeroNet: - Added better tracker error handling - Updated alive trackers list (if anyone have more, please let us know)

If you want to stay updated about the project status:
We have created a @HelloZeronet Twitter account

Changelog: Jan 27, 2015

- Posted in ZeroBlog by with comments

ZeroNet * You can use to start zeronet and open in browser automatically * Send timeout 50sec (workaround for some strange problems until we rewrite the network code without zeromq) * Reworked Websocket API to make it unified and allow named and unnamed parameters * Reload content.json when changed using fileWrite API command * Some typo fix

ZeroBlog * Allow edit post on mainpage * Also change blog title in content.json when modified using inline editor

ZeroHello * Update failed warning changed to No peers found when seeding own site.

Changelog: Jan 25, 2015

- Posted in ZeroBlog by with comments

ZeroNet - Utf-8 site titles fixed - Changes in DebugMedia merger to allow faster, node.js based coffeescript compiler

ZeroBlog - Inline editor rewritten to simple textarea, so copy/paste, undo/redo now working correctly - Read more button to folded posts with --- - ZeroBlog running in demo mode, so anyone can try the editing tools - Base html tag fixed - Markdown cheat-sheet - Confirmation if you want to close the browser tab while editing

How to update your running blog? - Backup your content.json and data.json files - Copy the files in the data/1BLogC9LN4oPDcruNz3qo1ysa133E9AGg8 directory to your site.

How to have a blog like this

- Posted in ZeroBlog by with comments

Simple, one click cloning

Use Clone feature in ZeroHello


Alternative, manual method:

  • Stop ZeroNet
  • Create a new site using python siteCreate command
  • Copy all file from data/1BLogC9LN4oPDcruNz3qo1ysa133E9AGg8 to data/[Your new site address displayed when executed siteCreate] directory
  • Delete data directory and rename data-default to data to get a clean, empty site
  • Rename data/users/content-default.json file to data/users/content.json
  • Execute siteSign [yoursiteaddress] --inner_path data/users/content.json to sign commenting rules
  • Start ZeroNet
  • Add/Modify content
  • Click on the Sign & Publish new content button
  • Congratulations! Your site is ready to access.

Note: You have to start commands with lib\zeronet.cmd ... if you downloaded ZeroNet-win-dist package

Changelog: Jan 24, 2015

- Posted in ZeroBlog by with comments

  • Version 0.1.6
  • Only serve .html files with wrapper frame
  • Http parameter support in url
  • Customizable background-color for wrapper in content.json
  • New Websocket API commands (only allowed on own sites):
    • fileWrite: Modify site's files in hdd from javascript
    • sitePublish: Sign new content and Publish to peers
  • Prompt value support in ZeroFrame (used for prompting privatekey for publishing in ZeroBlog)

Previous changes:

Jan 20, 2014

  • Version 0.1.5
  • Detect computer wakeup from sleep and acts as startup (check open port, site changes)
  • Announce interval changed from 10min to 20min
  • Delete site files command support
  • Stop unfinished downloads on pause, delete
  • Confirm dialog support to WrapperApi

ZeroHello - Site Delete menuitem - Browser back button doesn't jumps to top

Jan 19, 2014:

Jan 18, 2014:

  • Version 0.1.3
  • content.json hashing changed from sha1 to sha512 (trimmed to 256bits) for better security, keep hasing to sha1 for backward compatiblility yet
  • Fixed fileserver_port argument parsing
  • Try to ping peer before asking any command if no communication for 20min
  • Ping timeout / retry
  • Reduce websocket bw usage
  • Separate wrapper_key for websocket auth and auth_key to identify user
  • Removed unnecessary from wrapper iframe url

ZeroHello: - Compatiblilty with 0.1.3 websocket changes while maintaining backward compatibility - Better error report on file update fail

ZeroBoard: - Support for sha512 hashed auth_key, but keeping md5 key support for older versions yet

Jan 17, 2014:

  • Version 0.1.2
  • Better error message logging
  • Kill workers on download done
  • Retry on socket error
  • Timestamping console messages

Jan 16:

  • Version to 0.1.1
  • Version info to websocket api
  • Add publisher's zeronet version to content.json
  • Still chasing network publish problems, added more debug info

ZeroHello: - Your and the latest ZeroNet version added to top right corner (please update if you dont see it)

ZeroBlog features

- Posted in ZeroBlog by with comments

Initial version (Jan 24, 2014):

  • Site avatar generated by site address
  • Distraction-free inline edit: Post title, date, body, Site title, description, links
  • Post format using markdown
  • Code block syntax highlight using highlight.js
  • Create & Delete post
  • Sign & Publish from web
  • Fold blog post: Content after first --- won't appear at listing
  • Shareable, friendly post urls


  • ~~Better content editor (contenteditable seemed like a good idea, but tricky support of copy/paste makes it more pain than gain)~~
  • Image upload to post & blog avatar
  • Paging
  • Searching
  • ~~Quick cheat-sheet using markdown~~

Code highlight demos

Server-side site publishing (

def actionSitePublish(self, to, params):
    site =
    if not site.settings["own"]: return self.response(to, "Forbidden, you can only modify your own sites")

    # Signing
    site.loadContent(True) # Reload content.json, ignore errors to make it up-to-date
    signed = site.signContent(params[0]) # Sign using private key sent by user
    if signed:
        self.cmd("notification", ["done", "Private key correct, site signed!", 5000])  # Display message for 5 sec
        self.cmd("notification", ["error", "Site sign failed: invalid private key."])
        self.response(to, "Site sign failed")
    site.loadContent(True) # Load new content.json, ignore errors

    # Publishing
    if not site.settings["serving"]: # Enable site if paused
        site.settings["serving"] = True

    published = site.publish(5) # Publish to 5 peer

    if published>0: # Successfuly published
        self.cmd("notification", ["done", "Site published to %s peers." % published, 5000])
        self.response(to, "ok")
        site.updateWebsocket() # Send updated site data to local websocket clients
        if len(site.peers) == 0:
            self.cmd("notification", ["info", "No peers found, but your site is ready to access."])
            self.response(to, "No peers found, but your site is ready to access.")
            self.cmd("notification", ["error", "Site publish failed."])
            self.response(to, "Site publish failed.")

Client-side site publish (

# Sign and Publish site
publish: =>
    if not @server_info.ip_external # No port open
        @cmd "wrapperNotification", ["error", "To publish the site please open port <b>#{@server_info.fileserver_port}</b> on your router"]
        return false
    @cmd "wrapperPrompt", ["Enter your private key:", "password"], (privatekey) => # Prompt the private key
        $(".publishbar .button").addClass("loading")
        @cmd "sitePublish", [privatekey], (res) =>
            $(".publishbar .button").removeClass("loading")
            @log "Publish result:", res

    return false # Ignore link default event