flame

Flame is self-hosted startpage for your server. Easily manage your apps and bookmarks with built-in editors.

Stars
4.48K
Forks
224
Open issues
140
Closed issues
224
Last release
10 months ago
Last commit
10 months ago
Watchers
4.48K
Total releases
17
Total commits
304
Open PRs
35
Closed PRs
62
Repo URL
Platform
License
mit
Category
Usecase
Offers premium version?
NO
Proprietary?
NO
About

Flame

Description

Flame is self-hosted startpage for your server. Its design is inspired (heavily) by SUI. Flame is very easy to setup and use. With built-in editors, it allows you to setup your very own application hub in no time - no file editing necessary.

Functionality

  • 📝 Create, update, delete your applications and bookmarks directly from the app using built-in GUI editors
  • 📌 Pin your favourite items to the homescreen for quick and easy access
  • 🔍 Integrated search bar with local filtering, 11 web search providers and ability to add your own
  • 🔑 Authentication system to protect your settings, apps and bookmarks
  • 🔨 Dozens of options to customize Flame interface to your needs, including support for custom CSS, 15 built-in color themes and custom theme builder
  • ☀️ Weather widget with current temperature, cloud coverage and animated weather status
  • 🐳 Docker integration to automatically pick and add apps based on their labels

Installation With Docker (recommended)

Docker Hub link

docker pull pawelmalak/flame

for ARM architecture (e.g. RaspberryPi)

docker pull pawelmalak/flame:multiarch

installing specific version

docker pull pawelmalak/flame:2.0.0

Deployment
# run container
docker run -p 5005:5005 -v /path/to/data:/app/data -e PASSWORD=flame_password pawelmalak/flame
Building images
# build image for amd64 only
docker build -t flame -f .docker/Dockerfile .

build multiarch image for amd64, armv7 and arm64

building failed multiple times with 2GB memory usage limit so you might want to increase it

docker buildx build \ --platform linux/arm/v7,linux/arm64,linux/amd64 \ -f .docker/Dockerfile.multiarch \ -t flame:multiarch .

Docker-Compose
version: '3.6'

services: flame: image: pawelmalak/flame container_name: flame volumes: - /path/to/host/data:/app/data - /var/run/docker.sock:/var/run/docker.sock # optional but required for Docker integration ports: - 5005:5005 secrets: - password # optional but required for (1) environment: - PASSWORD=flame_password - PASSWORD_FILE=/run/secrets/password # optional but required for (1) restart: unless-stopped

optional but required for Docker secrets (1)

secrets: password: file: /path/to/secrets/password

Docker Secrets

All environment variables can be overwritten by appending _FILE to the variable value. For example, you can use PASSWORD_FILE to pass through a docker secret instead of PASSWORD. If both PASSWORD and PASSWORD_FILE are set, the docker secret will take precedent.

# ./secrets/flame_password
my_custom_secret_password_123

./docker-compose.yml

secrets: password: file: ./secrets/flame_password

Skaffold
# use skaffold
skaffold dev
Without Docker

Follow instructions from wiki: Installation without Docker

Development Technology

  • Backend
    • Node.js + Express
    • Sequelize ORM + SQLite

  • Frontend

    • React
    • Redux
    • TypeScript

  • Deployment

    • Docker
    • Kubernetes

Creating dev environment
# clone repository
git clone https://github.com/pawelmalak/flame
cd flame

run only once

npm run dev-init

start backend and frontend development servers

npm run dev

Screenshots

Usage Authentication

Visit project wiki to read more about authentication

Search bar Searching

The default search setting is to search through all your apps and bookmarks. If you want to search using specific search engine, you need to type your search query with selected prefix. For example, to search for "what is docker" using google search you would type: /g what is docker.

For list of supported search engines, shortcuts and more about searching functionality visit project wiki.

Setting up weather module

  1. Obtain API Key from Weather API.

    Free plan allows for 1M calls per month. Flame is making less then 3K API calls per month.

  2. Get lat/long for your location. You can get them from latlong.net.
  3. Enter and save data. Weather widget will now update and should be visible on Home page.

Docker integration

In order to use the Docker integration, each container must have the following labels:

labels:

  • flame.type=application # "app" works too
  • flame.name=My container
  • flame.url=https://example.com
  • flame.icon=icon-name # optional, default is "docker" # - flame.icon=custom to make changes in app. ie: custom icon upload

"Use Docker API" option must be enabled for this to work. You can find it in Settings > Docker

You can also set up different apps in the same label adding ; between each one.

labels:
  • flame.type=application
  • flame.name=First App;Second App
  • flame.url=https://example1.com;https://example2.com
  • flame.icon=icon-name1;icon-name2
  • If you want to use a remote docker host follow this instructions in the host:

    • Open the file /lib/systemd/system/docker.service, search for ExecStart and edit the value
    ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:${PORT} -H unix:///var/run/docker.sock
    

    The above command will bind the docker engine server to the Unix socket as well as TCP port of your choice. “0.0.0.0” means docker-engine accepts connections from all IP addresses.

    • Restart the daemon and Docker service
    sudo systemctl daemon-reload
    sudo service docker restart
    • Test if it is working
    curl http://${IP}:${PORT}/version
    Kubernetes integration

    In order to use the Kubernetes integration, each ingress must have the following annotations:

    metadata:
    annotations:
    
  • flame.pawelmalak/type=application # "app" works too
  • flame.pawelmalak/name=My container
  • flame.pawelmalak/url=https://example.com
  • flame.pawelmalak/icon=icon-name # optional, default is "kubernetes"
  • "Use Kubernetes Ingress API" option must be enabled for this to work. You can find it in Settings > Docker

    Import HTML Bookmarks (Experimental)
    • Requirements
      • python3
      • pip packages: Pillow, beautifulsoup4
    • Backup your db.sqlite before running script!
    • Known Issues:
      • generated icons are sometimes incorrect
    pip3 install Pillow, beautifulsoup4
    
    
    

    cd flame/.dev python3 bookmarks_importer.py --bookmarks <path to bookmarks.html> --data <path to flame data folder>

    Custom CSS and themes

    See project wiki for Custom CSS and Custom theme with CSS.

    Alternative Projects
    No projects found

    Subscribe to Open Source Businees Newsletter

    Twice a month we will interview people behind open source businesses. We will talk about how they are building a business on top of open source projects.

    We'll never share your email with anyone else.