Simple and fast databaseless PHP blogging platform, and Flat-File CMS - https://www.htmly.com https://www.htmly.com
  • PHP 56%
  • CSS 30.1%
  • JavaScript 13.9%
Find a file
2023-12-04 11:49:53 +07:00
cache Update files 2023-11-29 20:29:29 +07:00
config Remove port 443 during installation 2023-12-04 11:49:53 +07:00
content/data Limit tagcloud 2022-02-05 13:54:58 +07:00
lang Translate theme 2023-12-04 11:13:13 +07:00
system Translate important strings 2023-12-03 20:24:17 +07:00
themes Translate theme 2023-12-04 11:13:13 +07:00
.gitignore Update files 2022-02-11 17:51:52 +07:00
.htaccess Maintenance and bugs fixes 2016-01-24 21:35:29 +07:00
.updateignore added .updateignore 2014-11-12 21:21:00 +01:00
composer.json PHP 8.x compatibility 2023-11-22 17:15:14 +07:00
composer.lock Composer update 2020-05-05 08:06:22 +07:00
COPYRIGHT.txt Update files 2023-11-29 20:29:29 +07:00
favicon.ico Add htmly logo and favicon 2015-08-13 19:41:18 +07:00
humans.txt Bump the tag name 2021-02-21 17:26:44 +07:00
index.php Silence is golden 2021-03-05 10:28:00 +07:00
install.php Remove port 443 during installation 2023-12-04 11:49:53 +07:00
LICENSE.txt Rename license.txt to LICENSE.txt 2014-01-03 20:03:55 +07:00
README.md Update files 2023-11-29 20:29:29 +07:00
robots.txt Updated robots text 2015-08-24 16:06:54 +02:00
upload.php use bootstrap for file upload, remove iframe for ajax 2021-03-23 13:39:26 -07:00

Logo

HTMLy is an open source Databaseless Blogging Platform or Flat-File Blog prioritizes simplicity and speed written in PHP. HTMLy can be referred to as Flat-File CMS either 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.

Demo

Visit HTMLy demo as blog.

Features

  • Admin Panel
  • Markdown editor with live preview and image upload
  • Categorization with category and tags (multiple tagging support)
  • Static Pages (e.g. Contact Page, About Page)
  • Meta canonical, description, and rich snippets for SEO
  • Pagination
  • Author Page
  • Multi author support
  • Social Links
  • Disqus Comments (optional)
  • Facebook Comments (optional)
  • Google Analytics
  • Built-in Search
  • Related Posts
  • Per Post Navigation (previous and next post)
  • Body class for easy theming
  • Breadcrumb
  • Archive page (by year, year-month, or year-month-day)
  • JSON API
  • OPML
  • RSS Feed
  • RSS 2.0 Importer (basic)
  • Sitemap.xml
  • Archive and Tag Cloud Widget
  • SEO Friendly URLs
  • Teaser thumbnail for images and Youtube videos
  • Responsive Design
  • User Roles
  • Online Backup
  • File Caching
  • Online Update
  • Post Draft
  • i18n
  • Menu builder
  • Scheduled posts

Requirements

HTMLy requires PHP 5.3 or greater, PHP-XML package, PHP-INTL package, and PHP-ZIP package for backup feature.

Installations

Install HTMLy using the source code:

  1. Download the latest version from the Github repo
  2. Upload and extract the zip file to your web server. You can upload it in the root directory, or in subdirectory such as htmly.
  3. Visit your domain. If you extract it in root directory visit https://www.example.com/install.php and if in subdirectory visit https://www.example.com/htmly/install.php.
  4. Follow the installer to install HTMLy.
  5. The installer will try to delete itself. Please delete the installer manually if the install.php still exist.

Online install

Install HTMLy without downloading the source code and use the online installer:

  1. Download online-installer.php from the latest release
  2. If you upload it in root directory visit https://www.example.com/online-installer.php or if in subdirectory visit https://www.example.com/subdirectory/online-installer.php.
  3. Follow the installer to install HTMLy.
  4. Please delete the installer manually if the online-installer.php and install.php still exist.

Configurations

Set written permission for the cache and content directories.

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

Lighttpd

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"
)

Nginx

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;
  }
}

Making a secure password

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 password_hash.

Contribute

  1. Fork and edit
  2. Submit pull request for consideration

Contributors

For copyright notice please read COPYRIGHT.txt. HTMLy is licensed under the GNU General Public License Version 2.0 (or later).