HTMLy is an open source databaseless blogging platform that prioritizes simplicity and speed (Flat-File Blog). HTMLy can be referred to as a Flat-File CMS, since it will also manage your content.
You do not need to use a VPS to run HTMLy, shared hosting or even free hosting should work as long as the host supports at least PHP 5.3.
HTMLy requires PHP 5.3 or greater.
If you have OpenSSL on your server, use the installer and read the following instructions to get started. If you don't have OpenSSL, please download the latest version, extract it, then upload the extracted files to your server. Also, make sure the installation folder is writeable by your server.
Rename config.ini.example inside the config folder to config.ini (or you can create a new config/config.ini file) then change the site settings there.
Create YourUsername.ini inside the config/users folder or simply rename the username.ini.example file and write down your password there:
password = YourPassword
In addition, HTMLy support admin user role. To do so, simply add the following line to your choosen user:
role = admin
Users assigned with the admin role can edit/delete all users' posts.
To access the admin panel, add /login to the end of your site's URL.
e.g. www.yoursite.com/login
The following is an example configuration for lighttpd:
$HTTP["url"] =~ "^/config" {
url.access-deny = ( "" )
}
$HTTP["url"] =~ "^/system/includes" {
url.access-deny = ( "" )
}
$HTTP["url"] =~ "^/system/admin/views" {
url.access-deny = ( "" )
}
url.rewrite-once = (
"^/(themes|system|vendor)/(.*)" => "$0",
"^/(.*\.php)" => "$0",
# Everything else is handles by htmly
"^/(.*)$" => "/index.php/$1"
)
The following is a basic configuration for Nginx:
server {
listen 80;
server_name example.com www.example.com;
root /usr/share/nginx/html;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log error;
index index.php;
location ~ /config/ {
deny all;
}
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Passwords can be stored in username.ini (where "username" is the user's username) in either plaintext, encryption algorithms supported by php hash or bcrypt (recommended). To generate a bcrypt encrypted password:
$ php -a
> echo password_hash('desiredpassword', PASSWORD_BCRYPT);
This will produce a hash which is to be placed in the password field in username.ini. Ensure that the encryption field is set to bcrypt.
The built-in editor found in the admin panel, also provides you the ability to write to Markdown files offline by uploading them (see naming convention below) into the content/username/blog folder (the username must match YourUsername.ini above).
For static pages you can upload it to the content/static folder.
When you write a blog post and save it via the admin panel, HTMLy automatically create a .md file extension with the following name, example:
2014-01-31-12-56-40_tag1,tag2,tag3_databaseless-blogging-platform-flat-file-blog.md
Here's the explanation (separated by an underscore):
2014-01-31-12-56-40 is the published date. The date format is yyyy-mm-dd-hh-mm-sstag1,tag2,tag3 are the tags, separated by commasdatabaseless-blogging-platform-flat-file-blog is the URLFor static pages, use the following format:
content/static/about.md
In the example above, the /about.md creates the URL:
www.yourblog.com/about
Thus, if you write/create files offline, you must name the .md file in the format above.
For static subpages, use the following format:
content/static/about/me.md
This will create the URL:
www.yourblog.com/about/me
If you are writing offline, to create a title for your post, wrap the title with an HTML comment and a t on both side.
<!--t Title t-->
Example of how your post would look like:
<!--t Here is the post title t-->
Paragraph 1
Paragraph 2 etc.
Visit HTMLy Demo.
People who give references and inspiration for HTMLy:
For copyright notice please read COPYRIGHT.txt. HTMLy is licensed under the GNU General Public License Version 2.0 (or later).