Repository files navigation

.. This document uses rst format. See http://docutils.sourceforge.net/
Quick start: http://docutils.sourceforge.net/docs/user/rst/quickref.html Use "make README.html" to make the nice HTML version (requires python3-docutils or python-docutils) vim: ts=4 et

NGW

Introduction

NGW is a kind of groupware. It supports customizable contacts, groups, events, news, files, and messages.

It provide a high level of permission settings including which group can see/change which contact fields, which other groups.

It can also pilot permission to a jabber installation as extensions.

This is the installation guide, intended for system administrators.

Debian repository setup (optional)

It is recommanded to use Debian 10 (Buster) or above. All sources are available, so you can use other settings if you want to, but you are on your own then.

Here's a suggested /etc/apt/sources.list:

deb http://http.debian.net/debian/ buster main
deb-src http://http.debian.net/debian/ buster main
deb http://security.debian.org/ buster/updates main
deb-src http://security.debian.org/ buster/updates main

If you want the packages from nirgal.com, have a look at the README file at https://nirgal.com/debian/

Requirements

Standard packages:

aptitude install python3-django python3-psycopg2 postgresql libapache2-mod-wsgi-py3 gettext python3-socks python3-cracklib python3-magic python3-pil tor make python3-gnupg libjs-jquery-ui openssl python3-django-session-security isort flake8

If you set up nirgal.com repository as described above, just run:

aptitude install libjs-xgcalendar python3-decoratedstr

The sources of the other packages are available at nirgal.com/debian.

Use the source

If you did not yet, you need to clone the git repository:

git clone https://github.com/nirgal/ngw.git

As root, make a symbolic link from the git copy to /usr/lib. Base directory must be /usr/lib/ngw.

That way, you can have upgrades with a simple git pull. You need to run the Makefile after each upgrades (not yet on the first installation). So it is suggested you create a .git/hooks/post-merge 755 file:

#!/bin/bash
echo "Running $0" >&2
make

The source is flake8 compliant. See http://flake8.readthedocs.org/

Please ensure you are committing correct code by invoking make flake8 before any commit. You'll need to install flake8 package. Then it is recommended you create a .git/hooks/pre-commit 755 file to do that automatically:

#!/bin/sh
make isort flake8

Postgres setup

Ngw depends on some advanced PostgreSQL functions, such as recursive queries. So this is a requirement. You cannot use another database.

Create a user ngw (or something else):

postgres@localhost:~$ createuser ngw --no-superuser --createdb --no-createrole

Set a password for it:

postgres@localhost:~$ psql -c "\password ngw"

Create a database ngw with owner ngw:

postgres@localhost:~$ createdb ngw -E unicode -O ngw

Application setup

You need to create and tune your settings.py. It is recommended to use settings.py.exemple as a template. Then:

  • Put your database user/password there

  • Put something in SECRET_KEY:

    from django.utils.crypto import get_random_string
    get_random_string(50, 'abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)')
    
  • Run the initialisation / update script:

    There are many things that needs to be done to have a running system:

    • Create the database structure, populate the initial data, and create the extra views and functions.
    • Compile the translations.
    • Collect the static files in a single place.

    You just need to run:

    $ make
    
  • Create an administrative account on the application level. Use:

    $ ./manage.py createsuperuser
    
  • Now the application should run locally:

    $ ./manage.py runserver
    

Apache

User or group www-data should have write access to /usr/lib/ngw/media/fields, /usr/lib/ngw/media/g and /usr/lib/ngw/media/messages. If you want to run the debug runserver command from time to time, I suggest you chown :www-data that folder, with g+ws mode.

Make sure /etc/mime.types serves .mjs files as application/javascript. This is the default in Debian 11+ (bullseye).

Cron

You should to set up a cron tab:

*/5 * * * * /usr/lib/ngw/manage.py msgsync -v 2
0 * * * * /usr/lib/ngw/manage.py clearsessions

You may also want to setup some kind of backup here.

Optionnal extensions

ejabberd synchronisation

You can have one group automatically grant access to a local ejabberd.

See extentions/xmpp/README

gnupg support

Public keys can be /usr/lib/ngw/.gnupg:

mkdir /var/lib/ngw
chown www-data /var/lib/ngw

Right now, keys needs to be imported by hand: gpg --homedir /var/lib/ngw/ --import akey.key

Add Listen 11371 at the end of the /etc/apache2/ports.conf to have an hkp:// compatible server (Download only)

Uncomment gpg keyring directory in settings.py (GPG_HOME)

License

Unless otherwise specified, the project is licensed using a BSD-2 license. See LICENSE for the full text.

Files in core/static/ngw/twemoji are from the Twitter emoji project at https://github.com/twitter/twemoji (C) Twitter using a BSD-2 license.

Files in core/static/ngw/notoemoji are from the Noto Emoji at https://github.com/googlefonts/noto-emoji They use an Apache License 2.0.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

.. This document uses rst format. See http://docutils.sourceforge.net/
Quick start: http://docutils.sourceforge.net/docs/user/rst/quickref.html Use "make README.html" to make the nice HTML version (requires python3-docutils or python-docutils) vim: ts=4 et

NGW

Introduction

NGW is a kind of groupware. It supports customizable contacts, groups, events, news, files, and messages.

It provide a high level of permission settings including which group can see/change which contact fields, which other groups.

It can also pilot permission to a jabber installation as extensions.

This is the installation guide, intended for system administrators.

Debian repository setup (optional)

It is recommanded to use Debian 10 (Buster) or above. All sources are available, so you can use other settings if you want to, but you are on your own then.

Here's a suggested /etc/apt/sources.list:

deb http://http.debian.net/debian/ buster main
deb-src http://http.debian.net/debian/ buster main
deb http://security.debian.org/ buster/updates main
deb-src http://security.debian.org/ buster/updates main

If you want the packages from nirgal.com, have a look at the README file at https://nirgal.com/debian/

Requirements

Standard packages:

aptitude install python3-django python3-psycopg2 postgresql libapache2-mod-wsgi-py3 gettext python3-socks python3-cracklib python3-magic python3-pil tor make python3-gnupg libjs-jquery-ui openssl python3-django-session-security isort flake8

If you set up nirgal.com repository as described above, just run:

aptitude install libjs-xgcalendar python3-decoratedstr

The sources of the other packages are available at nirgal.com/debian.

Use the source

If you did not yet, you need to clone the git repository:

git clone https://github.com/nirgal/ngw.git

As root, make a symbolic link from the git copy to /usr/lib. Base directory must be /usr/lib/ngw.

That way, you can have upgrades with a simple git pull. You need to run the Makefile after each upgrades (not yet on the first installation). So it is suggested you create a .git/hooks/post-merge 755 file:

#!/bin/bash
echo "Running $0" >&2
make

The source is flake8 compliant. See http://flake8.readthedocs.org/

Please ensure you are committing correct code by invoking make flake8 before any commit. You'll need to install flake8 package. Then it is recommended you create a .git/hooks/pre-commit 755 file to do that automatically:

#!/bin/sh
make isort flake8

Postgres setup

Ngw depends on some advanced PostgreSQL functions, such as recursive queries. So this is a requirement. You cannot use another database.

Create a user ngw (or something else):

postgres@localhost:~$ createuser ngw --no-superuser --createdb --no-createrole

Set a password for it:

postgres@localhost:~$ psql -c "\password ngw"

Create a database ngw with owner ngw:

postgres@localhost:~$ createdb ngw -E unicode -O ngw

Application setup

You need to create and tune your settings.py. It is recommended to use settings.py.exemple as a template. Then:

  • Put your database user/password there

  • Put something in SECRET_KEY:

    from django.utils.crypto import get_random_string
    get_random_string(50, 'abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)')
    
  • Run the initialisation / update script:

    There are many things that needs to be done to have a running system:

    • Create the database structure, populate the initial data, and create the extra views and functions.
    • Compile the translations.
    • Collect the static files in a single place.

    You just need to run:

    $ make
    
  • Create an administrative account on the application level. Use:

    $ ./manage.py createsuperuser
    
  • Now the application should run locally:

    $ ./manage.py runserver
    

Apache

User or group www-data should have write access to /usr/lib/ngw/media/fields, /usr/lib/ngw/media/g and /usr/lib/ngw/media/messages. If you want to run the debug runserver command from time to time, I suggest you chown :www-data that folder, with g+ws mode.

Make sure /etc/mime.types serves .mjs files as application/javascript. This is the default in Debian 11+ (bullseye).

Cron

You should to set up a cron tab:

*/5 * * * * /usr/lib/ngw/manage.py msgsync -v 2
0 * * * * /usr/lib/ngw/manage.py clearsessions

You may also want to setup some kind of backup here.

Optionnal extensions

ejabberd synchronisation

You can have one group automatically grant access to a local ejabberd.

See extentions/xmpp/README

gnupg support

Public keys can be /usr/lib/ngw/.gnupg:

mkdir /var/lib/ngw
chown www-data /var/lib/ngw

Right now, keys needs to be imported by hand: gpg --homedir /var/lib/ngw/ --import akey.key

Add Listen 11371 at the end of the /etc/apache2/ports.conf to have an hkp:// compatible server (Download only)

Uncomment gpg keyring directory in settings.py (GPG_HOME)

License

Unless otherwise specified, the project is licensed using a BSD-2 license. See LICENSE for the full text.

Files in core/static/ngw/twemoji are from the Twitter emoji project at https://github.com/twitter/twemoji (C) Twitter using a BSD-2 license.

Files in core/static/ngw/notoemoji are from the Noto Emoji at https://github.com/googlefonts/noto-emoji They use an Apache License 2.0.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

.. This document uses rst format. See http://docutils.sourceforge.net/
Quick start: http://docutils.sourceforge.net/docs/user/rst/quickref.html Use "make README.html" to make the nice HTML version (requires python3-docutils or python-docutils) vim: ts=4 et

NGW

Introduction

NGW is a kind of groupware. It supports customizable contacts, groups, events, news, files, and messages.

It provide a high level of permission settings including which group can see/change which contact fields, which other groups.

It can also pilot permission to a jabber installation as extensions.

This is the installation guide, intended for system administrators.

Debian repository setup (optional)

It is recommanded to use Debian 10 (Buster) or above. All sources are available, so you can use other settings if you want to, but you are on your own then.

Here's a suggested /etc/apt/sources.list:

deb http://http.debian.net/debian/ buster main
deb-src http://http.debian.net/debian/ buster main
deb http://security.debian.org/ buster/updates main
deb-src http://security.debian.org/ buster/updates main

If you want the packages from nirgal.com, have a look at the README file at https://nirgal.com/debian/

Requirements

Standard packages:

aptitude install python3-django python3-psycopg2 postgresql libapache2-mod-wsgi-py3 gettext python3-socks python3-cracklib python3-magic python3-pil tor make python3-gnupg libjs-jquery-ui openssl python3-django-session-security isort flake8

If you set up nirgal.com repository as described above, just run:

aptitude install libjs-xgcalendar python3-decoratedstr

The sources of the other packages are available at nirgal.com/debian.

Use the source

If you did not yet, you need to clone the git repository:

git clone https://github.com/nirgal/ngw.git

As root, make a symbolic link from the git copy to /usr/lib. Base directory must be /usr/lib/ngw.

That way, you can have upgrades with a simple git pull. You need to run the Makefile after each upgrades (not yet on the first installation). So it is suggested you create a .git/hooks/post-merge 755 file:

#!/bin/bash
echo "Running $0" >&2
make

The source is flake8 compliant. See http://flake8.readthedocs.org/

Please ensure you are committing correct code by invoking make flake8 before any commit. You'll need to install flake8 package. Then it is recommended you create a .git/hooks/pre-commit 755 file to do that automatically:

#!/bin/sh
make isort flake8

Postgres setup

Ngw depends on some advanced PostgreSQL functions, such as recursive queries. So this is a requirement. You cannot use another database.

Create a user ngw (or something else):

postgres@localhost:~$ createuser ngw --no-superuser --createdb --no-createrole

Set a password for it:

postgres@localhost:~$ psql -c "\password ngw"

Create a database ngw with owner ngw:

postgres@localhost:~$ createdb ngw -E unicode -O ngw

Application setup

You need to create and tune your settings.py. It is recommended to use settings.py.exemple as a template. Then:

  • Put your database user/password there

  • Put something in SECRET_KEY:

    from django.utils.crypto import get_random_string
    get_random_string(50, 'abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)')
    
  • Run the initialisation / update script:

    There are many things that needs to be done to have a running system:

    • Create the database structure, populate the initial data, and create the extra views and functions.
    • Compile the translations.
    • Collect the static files in a single place.

    You just need to run:

    $ make
    
  • Create an administrative account on the application level. Use:

    $ ./manage.py createsuperuser
    
  • Now the application should run locally:

    $ ./manage.py runserver
    

Apache

User or group www-data should have write access to /usr/lib/ngw/media/fields, /usr/lib/ngw/media/g and /usr/lib/ngw/media/messages. If you want to run the debug runserver command from time to time, I suggest you chown :www-data that folder, with g+ws mode.

Make sure /etc/mime.types serves .mjs files as application/javascript. This is the default in Debian 11+ (bullseye).

Cron

You should to set up a cron tab:

*/5 * * * * /usr/lib/ngw/manage.py msgsync -v 2
0 * * * * /usr/lib/ngw/manage.py clearsessions

You may also want to setup some kind of backup here.

Optionnal extensions

ejabberd synchronisation

You can have one group automatically grant access to a local ejabberd.

See extentions/xmpp/README

gnupg support

Public keys can be /usr/lib/ngw/.gnupg:

mkdir /var/lib/ngw
chown www-data /var/lib/ngw

Right now, keys needs to be imported by hand: gpg --homedir /var/lib/ngw/ --import akey.key

Add Listen 11371 at the end of the /etc/apache2/ports.conf to have an hkp:// compatible server (Download only)

Uncomment gpg keyring directory in settings.py (GPG_HOME)

License

Unless otherwise specified, the project is licensed using a BSD-2 license. See LICENSE for the full text.

Files in core/static/ngw/twemoji are from the Twitter emoji project at https://github.com/twitter/twemoji (C) Twitter using a BSD-2 license.

Files in core/static/ngw/notoemoji are from the Noto Emoji at https://github.com/googlefonts/noto-emoji They use an Apache License 2.0.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

.. This document uses rst format. See http://docutils.sourceforge.net/
Quick start: http://docutils.sourceforge.net/docs/user/rst/quickref.html Use "make README.html" to make the nice HTML version (requires python3-docutils or python-docutils) vim: ts=4 et

NGW

Introduction

NGW is a kind of groupware. It supports customizable contacts, groups, events, news, files, and messages.

It provide a high level of permission settings including which group can see/change which contact fields, which other groups.

It can also pilot permission to a jabber installation as extensions.

This is the installation guide, intended for system administrators.

Debian repository setup (optional)

It is recommanded to use Debian 10 (Buster) or above. All sources are available, so you can use other settings if you want to, but you are on your own then.

Here's a suggested /etc/apt/sources.list:

deb http://http.debian.net/debian/ buster main
deb-src http://http.debian.net/debian/ buster main
deb http://security.debian.org/ buster/updates main
deb-src http://security.debian.org/ buster/updates main

If you want the packages from nirgal.com, have a look at the README file at https://nirgal.com/debian/

Requirements

Standard packages:

aptitude install python3-django python3-psycopg2 postgresql libapache2-mod-wsgi-py3 gettext python3-socks python3-cracklib python3-magic python3-pil tor make python3-gnupg libjs-jquery-ui openssl python3-django-session-security isort flake8

If you set up nirgal.com repository as described above, just run:

aptitude install libjs-xgcalendar python3-decoratedstr

The sources of the other packages are available at nirgal.com/debian.

Use the source

If you did not yet, you need to clone the git repository:

git clone https://github.com/nirgal/ngw.git

As root, make a symbolic link from the git copy to /usr/lib. Base directory must be /usr/lib/ngw.

That way, you can have upgrades with a simple git pull. You need to run the Makefile after each upgrades (not yet on the first installation). So it is suggested you create a .git/hooks/post-merge 755 file:

#!/bin/bash
echo "Running $0" >&2
make

The source is flake8 compliant. See http://flake8.readthedocs.org/

Please ensure you are committing correct code by invoking make flake8 before any commit. You'll need to install flake8 package. Then it is recommended you create a .git/hooks/pre-commit 755 file to do that automatically:

#!/bin/sh
make isort flake8

Postgres setup

Ngw depends on some advanced PostgreSQL functions, such as recursive queries. So this is a requirement. You cannot use another database.

Create a user ngw (or something else):

postgres@localhost:~$ createuser ngw --no-superuser --createdb --no-createrole

Set a password for it:

postgres@localhost:~$ psql -c "\password ngw"

Create a database ngw with owner ngw:

postgres@localhost:~$ createdb ngw -E unicode -O ngw

Application setup

You need to create and tune your settings.py. It is recommended to use settings.py.exemple as a template. Then:

  • Put your database user/password there

  • Put something in SECRET_KEY:

    from django.utils.crypto import get_random_string
    get_random_string(50, 'abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)')
    
  • Run the initialisation / update script:

    There are many things that needs to be done to have a running system:

    • Create the database structure, populate the initial data, and create the extra views and functions.
    • Compile the translations.
    • Collect the static files in a single place.

    You just need to run:

    $ make
    
  • Create an administrative account on the application level. Use:

    $ ./manage.py createsuperuser
    
  • Now the application should run locally:

    $ ./manage.py runserver
    

Apache

User or group www-data should have write access to /usr/lib/ngw/media/fields, /usr/lib/ngw/media/g and /usr/lib/ngw/media/messages. If you want to run the debug runserver command from time to time, I suggest you chown :www-data that folder, with g+ws mode.

Make sure /etc/mime.types serves .mjs files as application/javascript. This is the default in Debian 11+ (bullseye).

Cron

You should to set up a cron tab:

*/5 * * * * /usr/lib/ngw/manage.py msgsync -v 2
0 * * * * /usr/lib/ngw/manage.py clearsessions

You may also want to setup some kind of backup here.

Optionnal extensions

ejabberd synchronisation

You can have one group automatically grant access to a local ejabberd.

See extentions/xmpp/README

gnupg support

Public keys can be /usr/lib/ngw/.gnupg:

mkdir /var/lib/ngw
chown www-data /var/lib/ngw

Right now, keys needs to be imported by hand: gpg --homedir /var/lib/ngw/ --import akey.key

Add Listen 11371 at the end of the /etc/apache2/ports.conf to have an hkp:// compatible server (Download only)

Uncomment gpg keyring directory in settings.py (GPG_HOME)

License

Unless otherwise specified, the project is licensed using a BSD-2 license. See LICENSE for the full text.

Files in core/static/ngw/twemoji are from the Twitter emoji project at https://github.com/twitter/twemoji (C) Twitter using a BSD-2 license.

Files in core/static/ngw/notoemoji are from the Noto Emoji at https://github.com/googlefonts/noto-emoji They use an Apache License 2.0.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

.. This document uses rst format. See http://docutils.sourceforge.net/
Quick start: http://docutils.sourceforge.net/docs/user/rst/quickref.html Use "make README.html" to make the nice HTML version (requires python3-docutils or python-docutils) vim: ts=4 et

NGW

Introduction

NGW is a kind of groupware. It supports customizable contacts, groups, events, news, files, and messages.

It provide a high level of permission settings including which group can see/change which contact fields, which other groups.

It can also pilot permission to a jabber installation as extensions.

This is the installation guide, intended for system administrators.

Debian repository setup (optional)

It is recommanded to use Debian 10 (Buster) or above. All sources are available, so you can use other settings if you want to, but you are on your own then.

Here's a suggested /etc/apt/sources.list:

deb http://http.debian.net/debian/ buster main
deb-src http://http.debian.net/debian/ buster main
deb http://security.debian.org/ buster/updates main
deb-src http://security.debian.org/ buster/updates main

If you want the packages from nirgal.com, have a look at the README file at https://nirgal.com/debian/

Requirements

Standard packages:

aptitude install python3-django python3-psycopg2 postgresql libapache2-mod-wsgi-py3 gettext python3-socks python3-cracklib python3-magic python3-pil tor make python3-gnupg libjs-jquery-ui openssl python3-django-session-security isort flake8

If you set up nirgal.com repository as described above, just run:

aptitude install libjs-xgcalendar python3-decoratedstr

The sources of the other packages are available at nirgal.com/debian.

Use the source

If you did not yet, you need to clone the git repository:

git clone https://github.com/nirgal/ngw.git

As root, make a symbolic link from the git copy to /usr/lib. Base directory must be /usr/lib/ngw.

That way, you can have upgrades with a simple git pull. You need to run the Makefile after each upgrades (not yet on the first installation). So it is suggested you create a .git/hooks/post-merge 755 file:

#!/bin/bash
echo "Running $0" >&2
make

The source is flake8 compliant. See http://flake8.readthedocs.org/

Please ensure you are committing correct code by invoking make flake8 before any commit. You'll need to install flake8 package. Then it is recommended you create a .git/hooks/pre-commit 755 file to do that automatically:

#!/bin/sh
make isort flake8

Postgres setup

Ngw depends on some advanced PostgreSQL functions, such as recursive queries. So this is a requirement. You cannot use another database.

Create a user ngw (or something else):

postgres@localhost:~$ createuser ngw --no-superuser --createdb --no-createrole

Set a password for it:

postgres@localhost:~$ psql -c "\password ngw"

Create a database ngw with owner ngw:

postgres@localhost:~$ createdb ngw -E unicode -O ngw

Application setup

You need to create and tune your settings.py. It is recommended to use settings.py.exemple as a template. Then:

  • Put your database user/password there

  • Put something in SECRET_KEY:

    from django.utils.crypto import get_random_string
    get_random_string(50, 'abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)')
    
  • Run the initialisation / update script:

    There are many things that needs to be done to have a running system:

    • Create the database structure, populate the initial data, and create the extra views and functions.
    • Compile the translations.
    • Collect the static files in a single place.

    You just need to run:

    $ make
    
  • Create an administrative account on the application level. Use:

    $ ./manage.py createsuperuser
    
  • Now the application should run locally:

    $ ./manage.py runserver
    

Apache

User or group www-data should have write access to /usr/lib/ngw/media/fields, /usr/lib/ngw/media/g and /usr/lib/ngw/media/messages. If you want to run the debug runserver command from time to time, I suggest you chown :www-data that folder, with g+ws mode.

Make sure /etc/mime.types serves .mjs files as application/javascript. This is the default in Debian 11+ (bullseye).

Cron

You should to set up a cron tab:

*/5 * * * * /usr/lib/ngw/manage.py msgsync -v 2
0 * * * * /usr/lib/ngw/manage.py clearsessions

You may also want to setup some kind of backup here.

Optionnal extensions

ejabberd synchronisation

You can have one group automatically grant access to a local ejabberd.

See extentions/xmpp/README

gnupg support

Public keys can be /usr/lib/ngw/.gnupg:

mkdir /var/lib/ngw
chown www-data /var/lib/ngw

Right now, keys needs to be imported by hand: gpg --homedir /var/lib/ngw/ --import akey.key

Add Listen 11371 at the end of the /etc/apache2/ports.conf to have an hkp:// compatible server (Download only)

Uncomment gpg keyring directory in settings.py (GPG_HOME)

License

Unless otherwise specified, the project is licensed using a BSD-2 license. See LICENSE for the full text.

Files in core/static/ngw/twemoji are from the Twitter emoji project at https://github.com/twitter/twemoji (C) Twitter using a BSD-2 license.

Files in core/static/ngw/notoemoji are from the Noto Emoji at https://github.com/googlefonts/noto-emoji They use an Apache License 2.0.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

.. This document uses rst format. See http://docutils.sourceforge.net/
Quick start: http://docutils.sourceforge.net/docs/user/rst/quickref.html Use "make README.html" to make the nice HTML version (requires python3-docutils or python-docutils) vim: ts=4 et

NGW

Introduction

NGW is a kind of groupware. It supports customizable contacts, groups, events, news, files, and messages.

It provide a high level of permission settings including which group can see/change which contact fields, which other groups.

It can also pilot permission to a jabber installation as extensions.

This is the installation guide, intended for system administrators.

Debian repository setup (optional)

It is recommanded to use Debian 10 (Buster) or above. All sources are available, so you can use other settings if you want to, but you are on your own then.

Here's a suggested /etc/apt/sources.list:

deb http://http.debian.net/debian/ buster main
deb-src http://http.debian.net/debian/ buster main
deb http://security.debian.org/ buster/updates main
deb-src http://security.debian.org/ buster/updates main

If you want the packages from nirgal.com, have a look at the README file at https://nirgal.com/debian/

Requirements

Standard packages:

aptitude install python3-django python3-psycopg2 postgresql libapache2-mod-wsgi-py3 gettext python3-socks python3-cracklib python3-magic python3-pil tor make python3-gnupg libjs-jquery-ui openssl python3-django-session-security isort flake8

If you set up nirgal.com repository as described above, just run:

aptitude install libjs-xgcalendar python3-decoratedstr

The sources of the other packages are available at nirgal.com/debian.

Use the source

If you did not yet, you need to clone the git repository:

git clone https://github.com/nirgal/ngw.git

As root, make a symbolic link from the git copy to /usr/lib. Base directory must be /usr/lib/ngw.

That way, you can have upgrades with a simple git pull. You need to run the Makefile after each upgrades (not yet on the first installation). So it is suggested you create a .git/hooks/post-merge 755 file:

#!/bin/bash
echo "Running $0" >&2
make

The source is flake8 compliant. See http://flake8.readthedocs.org/

Please ensure you are committing correct code by invoking make flake8 before any commit. You'll need to install flake8 package. Then it is recommended you create a .git/hooks/pre-commit 755 file to do that automatically:

#!/bin/sh
make isort flake8

Postgres setup

Ngw depends on some advanced PostgreSQL functions, such as recursive queries. So this is a requirement. You cannot use another database.

Create a user ngw (or something else):

postgres@localhost:~$ createuser ngw --no-superuser --createdb --no-createrole

Set a password for it:

postgres@localhost:~$ psql -c "\password ngw"

Create a database ngw with owner ngw:

postgres@localhost:~$ createdb ngw -E unicode -O ngw

Application setup

You need to create and tune your settings.py. It is recommended to use settings.py.exemple as a template. Then:

  • Put your database user/password there

  • Put something in SECRET_KEY:

    from django.utils.crypto import get_random_string
    get_random_string(50, 'abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)')
    
  • Run the initialisation / update script:

    There are many things that needs to be done to have a running system:

    • Create the database structure, populate the initial data, and create the extra views and functions.
    • Compile the translations.
    • Collect the static files in a single place.

    You just need to run:

    $ make
    
  • Create an administrative account on the application level. Use:

    $ ./manage.py createsuperuser
    
  • Now the application should run locally:

    $ ./manage.py runserver
    

Apache

User or group www-data should have write access to /usr/lib/ngw/media/fields, /usr/lib/ngw/media/g and /usr/lib/ngw/media/messages. If you want to run the debug runserver command from time to time, I suggest you chown :www-data that folder, with g+ws mode.

Make sure /etc/mime.types serves .mjs files as application/javascript. This is the default in Debian 11+ (bullseye).

Cron

You should to set up a cron tab:

*/5 * * * * /usr/lib/ngw/manage.py msgsync -v 2
0 * * * * /usr/lib/ngw/manage.py clearsessions

You may also want to setup some kind of backup here.

Optionnal extensions

ejabberd synchronisation

You can have one group automatically grant access to a local ejabberd.

See extentions/xmpp/README

gnupg support

Public keys can be /usr/lib/ngw/.gnupg:

mkdir /var/lib/ngw
chown www-data /var/lib/ngw

Right now, keys needs to be imported by hand: gpg --homedir /var/lib/ngw/ --import akey.key

Add Listen 11371 at the end of the /etc/apache2/ports.conf to have an hkp:// compatible server (Download only)

Uncomment gpg keyring directory in settings.py (GPG_HOME)

License

Unless otherwise specified, the project is licensed using a BSD-2 license. See LICENSE for the full text.

Files in core/static/ngw/twemoji are from the Twitter emoji project at https://github.com/twitter/twemoji (C) Twitter using a BSD-2 license.

Files in core/static/ngw/notoemoji are from the Noto Emoji at https://github.com/googlefonts/noto-emoji They use an Apache License 2.0.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

.. This document uses rst format. See http://docutils.sourceforge.net/
Quick start: http://docutils.sourceforge.net/docs/user/rst/quickref.html Use "make README.html" to make the nice HTML version (requires python3-docutils or python-docutils) vim: ts=4 et

NGW

Introduction

NGW is a kind of groupware. It supports customizable contacts, groups, events, news, files, and messages.

It provide a high level of permission settings including which group can see/change which contact fields, which other groups.

It can also pilot permission to a jabber installation as extensions.

This is the installation guide, intended for system administrators.

Debian repository setup (optional)

It is recommanded to use Debian 10 (Buster) or above. All sources are available, so you can use other settings if you want to, but you are on your own then.

Here's a suggested /etc/apt/sources.list:

deb http://http.debian.net/debian/ buster main
deb-src http://http.debian.net/debian/ buster main
deb http://security.debian.org/ buster/updates main
deb-src http://security.debian.org/ buster/updates main

If you want the packages from nirgal.com, have a look at the README file at https://nirgal.com/debian/

Requirements

Standard packages:

aptitude install python3-django python3-psycopg2 postgresql libapache2-mod-wsgi-py3 gettext python3-socks python3-cracklib python3-magic python3-pil tor make python3-gnupg libjs-jquery-ui openssl python3-django-session-security isort flake8

If you set up nirgal.com repository as described above, just run:

aptitude install libjs-xgcalendar python3-decoratedstr

The sources of the other packages are available at nirgal.com/debian.

Use the source

If you did not yet, you need to clone the git repository:

git clone https://github.com/nirgal/ngw.git

As root, make a symbolic link from the git copy to /usr/lib. Base directory must be /usr/lib/ngw.

That way, you can have upgrades with a simple git pull. You need to run the Makefile after each upgrades (not yet on the first installation). So it is suggested you create a .git/hooks/post-merge 755 file:

#!/bin/bash
echo "Running $0" >&2
make

The source is flake8 compliant. See http://flake8.readthedocs.org/

Please ensure you are committing correct code by invoking make flake8 before any commit. You'll need to install flake8 package. Then it is recommended you create a .git/hooks/pre-commit 755 file to do that automatically:

#!/bin/sh
make isort flake8

Postgres setup

Ngw depends on some advanced PostgreSQL functions, such as recursive queries. So this is a requirement. You cannot use another database.

Create a user ngw (or something else):

postgres@localhost:~$ createuser ngw --no-superuser --createdb --no-createrole

Set a password for it:

postgres@localhost:~$ psql -c "\password ngw"

Create a database ngw with owner ngw:

postgres@localhost:~$ createdb ngw -E unicode -O ngw

Application setup

You need to create and tune your settings.py. It is recommended to use settings.py.exemple as a template. Then:

  • Put your database user/password there

  • Put something in SECRET_KEY:

    from django.utils.crypto import get_random_string
    get_random_string(50, 'abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)')
    
  • Run the initialisation / update script:

    There are many things that needs to be done to have a running system:

    • Create the database structure, populate the initial data, and create the extra views and functions.
    • Compile the translations.
    • Collect the static files in a single place.

    You just need to run:

    $ make
    
  • Create an administrative account on the application level. Use:

    $ ./manage.py createsuperuser
    
  • Now the application should run locally:

    $ ./manage.py runserver
    

Apache

User or group www-data should have write access to /usr/lib/ngw/media/fields, /usr/lib/ngw/media/g and /usr/lib/ngw/media/messages. If you want to run the debug runserver command from time to time, I suggest you chown :www-data that folder, with g+ws mode.

Make sure /etc/mime.types serves .mjs files as application/javascript. This is the default in Debian 11+ (bullseye).

Cron

You should to set up a cron tab:

*/5 * * * * /usr/lib/ngw/manage.py msgsync -v 2
0 * * * * /usr/lib/ngw/manage.py clearsessions

You may also want to setup some kind of backup here.

Optionnal extensions

ejabberd synchronisation

You can have one group automatically grant access to a local ejabberd.

See extentions/xmpp/README

gnupg support

Public keys can be /usr/lib/ngw/.gnupg:

mkdir /var/lib/ngw
chown www-data /var/lib/ngw

Right now, keys needs to be imported by hand: gpg --homedir /var/lib/ngw/ --import akey.key

Add Listen 11371 at the end of the /etc/apache2/ports.conf to have an hkp:// compatible server (Download only)

Uncomment gpg keyring directory in settings.py (GPG_HOME)

License

Unless otherwise specified, the project is licensed using a BSD-2 license. See LICENSE for the full text.

Files in core/static/ngw/twemoji are from the Twitter emoji project at https://github.com/twitter/twemoji (C) Twitter using a BSD-2 license.

Files in core/static/ngw/notoemoji are from the Noto Emoji at https://github.com/googlefonts/noto-emoji They use an Apache License 2.0.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

.. This document uses rst format. See http://docutils.sourceforge.net/
Quick start: http://docutils.sourceforge.net/docs/user/rst/quickref.html Use "make README.html" to make the nice HTML version (requires python3-docutils or python-docutils) vim: ts=4 et

NGW

Introduction

NGW is a kind of groupware. It supports customizable contacts, groups, events, news, files, and messages.

It provide a high level of permission settings including which group can see/change which contact fields, which other groups.

It can also pilot permission to a jabber installation as extensions.

This is the installation guide, intended for system administrators.

Debian repository setup (optional)

It is recommanded to use Debian 10 (Buster) or above. All sources are available, so you can use other settings if you want to, but you are on your own then.

Here's a suggested /etc/apt/sources.list:

deb http://http.debian.net/debian/ buster main
deb-src http://http.debian.net/debian/ buster main
deb http://security.debian.org/ buster/updates main
deb-src http://security.debian.org/ buster/updates main

If you want the packages from nirgal.com, have a look at the README file at https://nirgal.com/debian/

Requirements

Standard packages:

aptitude install python3-django python3-psycopg2 postgresql libapache2-mod-wsgi-py3 gettext python3-socks python3-cracklib python3-magic python3-pil tor make python3-gnupg libjs-jquery-ui openssl python3-django-session-security isort flake8

If you set up nirgal.com repository as described above, just run:

aptitude install libjs-xgcalendar python3-decoratedstr

The sources of the other packages are available at nirgal.com/debian.

Use the source

If you did not yet, you need to clone the git repository:

git clone https://github.com/nirgal/ngw.git

As root, make a symbolic link from the git copy to /usr/lib. Base directory must be /usr/lib/ngw.

That way, you can have upgrades with a simple git pull. You need to run the Makefile after each upgrades (not yet on the first installation). So it is suggested you create a .git/hooks/post-merge 755 file:

#!/bin/bash
echo "Running $0" >&2
make

The source is flake8 compliant. See http://flake8.readthedocs.org/

Please ensure you are committing correct code by invoking make flake8 before any commit. You'll need to install flake8 package. Then it is recommended you create a .git/hooks/pre-commit 755 file to do that automatically:

#!/bin/sh
make isort flake8

Postgres setup

Ngw depends on some advanced PostgreSQL functions, such as recursive queries. So this is a requirement. You cannot use another database.

Create a user ngw (or something else):

postgres@localhost:~$ createuser ngw --no-superuser --createdb --no-createrole

Set a password for it:

postgres@localhost:~$ psql -c "\password ngw"

Create a database ngw with owner ngw:

postgres@localhost:~$ createdb ngw -E unicode -O ngw

Application setup

You need to create and tune your settings.py. It is recommended to use settings.py.exemple as a template. Then:

  • Put your database user/password there

  • Put something in SECRET_KEY:

    from django.utils.crypto import get_random_string
    get_random_string(50, 'abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)')
    
  • Run the initialisation / update script:

    There are many things that needs to be done to have a running system:

    • Create the database structure, populate the initial data, and create the extra views and functions.
    • Compile the translations.
    • Collect the static files in a single place.

    You just need to run:

    $ make
    
  • Create an administrative account on the application level. Use:

    $ ./manage.py createsuperuser
    
  • Now the application should run locally:

    $ ./manage.py runserver
    

Apache

User or group www-data should have write access to /usr/lib/ngw/media/fields, /usr/lib/ngw/media/g and /usr/lib/ngw/media/messages. If you want to run the debug runserver command from time to time, I suggest you chown :www-data that folder, with g+ws mode.

Make sure /etc/mime.types serves .mjs files as application/javascript. This is the default in Debian 11+ (bullseye).

Cron

You should to set up a cron tab:

*/5 * * * * /usr/lib/ngw/manage.py msgsync -v 2
0 * * * * /usr/lib/ngw/manage.py clearsessions

You may also want to setup some kind of backup here.

Optionnal extensions

ejabberd synchronisation

You can have one group automatically grant access to a local ejabberd.

See extentions/xmpp/README

gnupg support

Public keys can be /usr/lib/ngw/.gnupg:

mkdir /var/lib/ngw
chown www-data /var/lib/ngw

Right now, keys needs to be imported by hand: gpg --homedir /var/lib/ngw/ --import akey.key

Add Listen 11371 at the end of the /etc/apache2/ports.conf to have an hkp:// compatible server (Download only)

Uncomment gpg keyring directory in settings.py (GPG_HOME)

License

Unless otherwise specified, the project is licensed using a BSD-2 license. See LICENSE for the full text.

Files in core/static/ngw/twemoji are from the Twitter emoji project at https://github.com/twitter/twemoji (C) Twitter using a BSD-2 license.

Files in core/static/ngw/notoemoji are from the Noto Emoji at https://github.com/googlefonts/noto-emoji They use an Apache License 2.0.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages