All Projects → tbellembois → gobkm

tbellembois / gobkm

Licence: LGPL-3.0 License
Single user online bookmark manager.

Programming Languages

go
31211 projects - #10 most used programming language
javascript
184084 projects - #8 most used programming language
shell
77523 projects
HTML
75241 projects
Dockerfile
14818 projects

Labels

Projects that are alternatives of or similar to gobkm

awesome-bookmarking
🔖 Everything bookmarking related
Stars: ✭ 56 (+133.33%)
Mutual labels:  bookmark
mdash
⭐️ Lightweight new tab page for Chrome/Firefox, synced with your bookmarks
Stars: ✭ 19 (-20.83%)
Mutual labels:  bookmark
osmosmemo
Turn GitHub into a bookmark manager
Stars: ✭ 120 (+400%)
Mutual labels:  bookmark
pinboard-safariextension
📌 Pinboard Safari extension for bookmarking the current page.
Stars: ✭ 16 (-33.33%)
Mutual labels:  bookmark
jumpfs
Jumpfs is a cross-shell bookmarking system for files. folders, urls and shell-comands. It works in PowerShell, Bash, and Cmd.
Stars: ✭ 30 (+25%)
Mutual labels:  bookmark
Coursera-Clone
Coursera clone
Stars: ✭ 48 (+100%)
Mutual labels:  bookmark
222
222. Dark mode. Everywhere. 222 bytes of js to make any website dark
Stars: ✭ 58 (+141.67%)
Mutual labels:  bookmark
WebClipChangeAppLogo
iOS14利用WebClip更换图标,做到无缝启动App
Stars: ✭ 47 (+95.83%)
Mutual labels:  bookmark
bookmark-everything
This tool enables you to add bookmarks to your project files so you can reach them easily.
Stars: ✭ 37 (+54.17%)
Mutual labels:  bookmark
popc
Popc manager for vim & neovim
Stars: ✭ 17 (-29.17%)
Mutual labels:  bookmark
browse-manager
Chrome扩展,网址/域名拉黑,访问次数统计、提示,自动收藏。等
Stars: ✭ 81 (+237.5%)
Mutual labels:  bookmark
Cyca
Web-based bookmarks and feeds manager
Stars: ✭ 15 (-37.5%)
Mutual labels:  bookmark
browser-bookmarks
Retrieve bookmarks from different browsers.
Stars: ✭ 19 (-20.83%)
Mutual labels:  bookmark
YouP3
Android app for downloading media from YouTube with 4K Support (Beta)
Stars: ✭ 51 (+112.5%)
Mutual labels:  bookmark
atom-file-bookmark
Bookmark files in your project for quick access
Stars: ✭ 16 (-33.33%)
Mutual labels:  bookmark
tim
manage issues with order
Stars: ✭ 51 (+112.5%)
Mutual labels:  bookmark
node-bookmarks-parser
Parses Firefox/Chrome HTML bookmarks files
Stars: ✭ 44 (+83.33%)
Mutual labels:  bookmark
Popup-my-Bookmarks
A browser extension that providing a more efficient way to view and manage your bookmarks menu
Stars: ✭ 88 (+266.67%)
Mutual labels:  bookmark
search-bookmarks-history-and-tabs
Browser extension to search and navigate browser tabs, local bookmarks and history.
Stars: ✭ 57 (+137.5%)
Mutual labels:  bookmark
alfred-bookmarks
bookmark search with alfred workflow written in Go
Stars: ✭ 24 (+0%)
Mutual labels:  bookmark

GoBkm

GoBkm is an ultra minimalist single user online bookmark manager inspired by http://sitebar.org/ written in Go and GopherJS.
It is designed to run on a remote server (I run it on a RaspberryPi) and accessed remotely.

The purpose of this project was to study the Go programming language (OOP, databases, HTML templates, learning curve).

screenshot

Installation

Use the Docker image https://hub.docker.com/r/tbellembois/gobkm with the docker-compose.yml file in the sources.

or

Download and uncompress the latest release from https://github.com/tbellembois/gobkm/releases.

or

    $ go get -u github.com/tbellembois/gobkm

Usage

    ./gobkm # run GoBkm on localhost:8080

You can change the listening port with:

    ./gobkm -port [port_number]

Using an HTTP proxy (Apache/Nginx), specify its URL with:

    ./gobkm -port [port_number] -proxy [proxy_url]

Log to file

    ./gobkm -logfile /var/log/gobkm.log

Debug mode (by default only errors are shown):

    ./gobkm -debug

Specify sqlite database file path

    ./gobkm -db /var/gobkm/gobkm.db

GUI

  • drag and drop an URL from your Web browser address bar into a folder OR
  • use the "new bookmark" icon in a folder menu

Stars

You can "star" your favorite bookmarks to keep them on the top of the window.

Tags

You can tag bookmarks. This may be redondant with folders but it may help if you have bookmarks with the same topic in different folders.

Bookmarklets

Click on the little "earth" icon at the bottom of the application and drag and drop the bookmarklet in your bookmark bar. Searches in the search field are performed by bookmark names and tags.

Nginx proxy (optional)

GoBkm installation

You can use Nginx in front of GoBkm to use authentication and HTTPS.

  • create a gobkm user and group, and a home for the app

        groupadd --system gobkm
        useradd --system gobkm --gid gobkm
        mkdir /usr/local/gobkm
  • drop the bkm binary into the /usr/local/gobkm directory

  • setup permissions

        chown -R  gobkm:gobkm /usr/local/gobkm
        cd /usr/local/gobkm
  • launch GoBkm

        cd /usr/local/gobkm
        su - gobkm -c "/usr/local/gobkm/gobkm -proxy http://proxy_url" &

Nginx configuration

  • setup a GoBkm server configuration file such as /etc/nginx/servers-available/gobkm.conf

    server {
    
        listen 80;
        # change proxy_url
        server_name proxy_url;
          
        root          /usr/local/gobkm;  
        charset utf-8;
    
        gzip on;
        gzip_disable "msie6";
    
        gzip_comp_level 6;
        gzip_min_length 1100;
        gzip_buffers 16 8k;
        gzip_proxied any;
        gzip_types
            text/plain
            text/css
            text/js
            text/xml
            text/javascript
            application/javascript
            application/x-javascript
            application/json
            application/xml
            application/rss+xml
            image/svg+xml;
    
        # uncomment and change to enable HTTPS
        #ssl on;
        #ssl_certificate /etc/nginx/ssl2/my-gobkm.crt;
        #ssl_certificate_key /etc/nginx/ssl2/my-gobkm.key;
    
        # uncomment to enable authentication
        # details at: http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html
        #auth_basic "GoBkm";
        #auth_basic_user_file /usr/local/gobkm/gobkm.htpasswd;
    
        location / {
    
    	  	# preflight OPTIONS requests response
    		if ($request_method = 'OPTIONS') {
    			add_header 'Access-Control-Allow-Credentials' 'true';
    			add_header 'Access-Control-Allow-Origin' '*';
    			add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
    			#
    			# Custom headers and headers various browsers *should* be OK with but aren't
    			#
    			add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
    			#
    			# Tell client that this pre-flight info is valid for 20 days
    			#
    			add_header 'Access-Control-Max-Age' 1728000;
    			add_header 'Content-Type' 'text/plain charset=UTF-8';
    			add_header 'Content-Length' 0;
    			return 204;
    		}
    
            # change the port if needed
        	proxy_set_header Upgrade $http_upgrade;
        	proxy_set_header Connection 'upgrade';
        	proxy_pass http://127.0.0.1:8080;
        }
    
    }
  • enable the new site

        $ ln -s /etc/nginx/servers-available/gobkm.conf /etc/nginx/servers-enabled/
        $ systemctl restart nginx

SSL self-signed certificate generation (optional)

I strongly recommend Let's Encrypt for the certificates generation.

The following method is just here for archive purposes.

	# generate a root CA key
	openssl genrsa -out rootCA.key 2048
	# the a root CA
	openssl req -x509 -new -nodes -key rootCA.key -days 3650 -out rootCA.crt
	# generate a server key  
    openssl genrsa -out my-gobkm.key 2048
	# then a CSR (certificate signing request)
	openssl req -new -key my-gobkm.key  -out my-gobkm.csr
	# and finally auto signing the server certificate with the root CA
    openssl x509 -req -in my-gobkm.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out my-gobkm.crt -days 3650

To avoid security exceptions just import your rootCA.crt into your browser.

systemd script (optional)

If you want to start GoBkm at boot you can install the provided systemd gobkm.service script.

    # example for Arch Linux
    cd /etc/systemd/system
    wget https://raw.githubusercontent.com/tbellembois/gobkm/master/gobkm.service
    vim gobkm.service
    # change the ExecStart line and other parameters according to your configuration
    systemctl enable gobkm.service

Thanks

Thanks to Sébastien Binet for the tutorial and help on Go.
Thanks to Dmitri Shuralyov for the help on GopherJS.

Known limitations

  • no user management
  • no authentication (relies on the HTTP proxy)
  • folders and bookmarks are sorted by title (currently not configurable)

Notes

Cross compiled for the RaspberryPi under Arch Linux with:

    # requires the package arm-linux-gnueabihf-gcc
    env GOOS=linux GOARCH=arm GOARM=7 CGO_ENABLED=1 CC=/usr/bin/arm-linux-gnueabihf-gcc go build .

Javascript generation (DEPRECATED):

    gopherjs build static/js/gjs-main.go -o static/js/gjs-main.js

Credits

References

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].