Kako namestiti osTicket na FreeBSD 12
Uporaba drugega sistema? osTicket je odprtokodni sistem za izdajo vstopnic za podporo strankam. Izvorna koda osTicket je javno gostovana na Githubu. V tej vadnici
Taiga je brezplačna in odprtokodna aplikacija za vodenje projektov. Za razliko od drugih orodij za vodenje projektov, Taiga uporablja inkrementalni agilni pristop za upravljanje razvoja projekta. Taiga je zelo zmogljiva in popolnoma prilagodljiva aplikacija. Zadnja stran Taige je napisana v Pythonu z uporabo ogrodja Django. Frontend je napisan v JavaScriptu z uporabo okvirjev CoffeeScript in AngularJS. Taiga vključuje funkcije, kot so sodelovanje pri projektih, tabla Kanban, sledenje napakam, poročanje, sledenje časa, zaostanki, wiki in še več.
V tej vadnici bomo uporabili taiga.example.com
ime domene, ki je usmerjeno na strežnik. Zamenjajte vse pojavitve taiga.example.com
z vašim dejanskim imenom domene.
Posodobite svoj osnovni sistem z uporabo priročnika Kako posodobiti CentOS 7 . Ko je vaš sistem posodobljen, nadaljujte z namestitvijo PostgreSQL.
PostgreSQL je objektno-relacijski sistem baz podatkov, znan po svoji stabilnosti in hitrosti. Taiga uporablja PostgreSQL za shranjevanje svoje baze podatkov. Dodajte repozitorij PostgreSQL v sistem.
sudo yum -y install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-1.noarch.rpm
Namestite strežnik baze podatkov PostgreSQL.
sudo yum -y install postgresql10-server postgresql10-contrib postgresql10
Inicializirajte bazo podatkov.
sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
Zaženite strežnik PostgreSQL in omogočite, da se samodejno zažene ob zagonu.
sudo systemctl start postgresql-10
sudo systemctl enable postgresql-10
Spremenite geslo za privzetega uporabnika PostgreSQL.
sudo passwd postgres
Prijavite se kot uporabnik PostgreSQL.
sudo su - postgres
Ustvarite novega uporabnika PostgreSQL za Taigo.
createuser taiga
PostgreSQL ponuja psql
lupino za izvajanje poizvedb v bazi podatkov. Preklopite na lupino PostgreSQL.
psql
Nastavite geslo za novoustvarjenega uporabnika za bazo podatkov Taiga.
ALTER USER taiga WITH ENCRYPTED password 'DBPassword';
Zamenjajte DBPassword
z varnim geslom. Ustvarite novo bazo podatkov za namestitev Taiga.
CREATE DATABASE taiga OWNER taiga;
Izstopite iz psql
lupine.
\q
Preklopite na sudo
uporabnika.
exit
Python 2.7 je vnaprej nameščen na strežniku CentOS 7, vendar Taiga zahteva Python različico 3.4 ali novejšo.
Python različico 3.6 bomo namestili iz vira. Namestite potrebna orodja za gradnjo in prevajalnik.
sudo yum -y install gcc autoconf flex bison libjpeg-turbo-devel freetype-devel zlib-devel zeromq3-devel gdbm-devel ncurses-devel automake libtool libffi-devel curl git tmux libxml2-devel libxslt-devel openssl-devel gcc-c++
Prenesite izvorno kodo Python.
wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tar.xz
Ekstrahirajte in konfigurirajte namestitev Pythona.
tar xf Python-3.6.3.tar.xz
cd Python-3.6.3
./configure --enable-optimizations --prefix=/usr
Naredite alternativno namestitev.
sudo make altinstall
Opomba : Alternativne namestitve namestijo Python 3.6 brez zamenjave privzete različice Pythona. Če zamenjate privzeti Python v CentOS 7, lahko pokvari YUM
upravitelja skladišča.
Zdaj boste lahko preverili njegovo različico.
python3.6 -V
Videti bi morali naslednje.
[user@vultr Python-3.6.3]$ python3.6 -V
Python 3.6.3
Namestite navidezno okolje Python z uporabo pip
.
sudo pip3.6 install virtualenv virtualenvwrapper
sudo pip3.6 install --upgrade setuptools pip
Navidezno okolje Python se uporablja za ustvarjanje izoliranega virtualnega okolja za projekt Python. Navidezno okolje vsebuje lastne namestitvene imenike in ne deli knjižnic z globalnimi in drugimi navideznimi okolji.
Taiga uporablja RabbitMQ za obdelavo čakalne vrste sporočil. RabbitMQ zahteva, da knjižnice Erlang delujejo. Namesti Erlang.
sudo yum -y install erlang
Uvozi podpisni ključ RabbitMQ GPG.
sudo rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
Namestite RabbitMQ.
sudo yum -y install https://dl.bintray.com/rabbitmq/rabbitmq-server-rpm/rabbitmq-server-3.6.12-1.el7.noarch.rpm
Zaženite in omogočite strežnik RabbitMQ.
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server
Dodajte uporabnika RabbitMQ in vhost. Prav tako zagotovite dovoljenje uporabniku prek gostitelja.
sudo rabbitmqctl add_user taiga StrongMQPassword
sudo rabbitmqctl add_vhost taiga
sudo rabbitmqctl set_permissions -p taiga taiga ".*" ".*" ".*"
Ne pozabite zamenjati StrongMQPassword
z varnim geslom.
Za prevajanje sprednjega dela Taige je potrebna različica Node.js 7 ali novejša. Dodajte skladišče Node.js različice 8.
curl -sL https://rpm.nodesource.com/setup_8.x | sudo -E bash -
Namestite Node.js in pwgen
pripomoček.
sudo yum install -y nodejs pwgen
pwgen
bo uporabljen kasneje za ustvarjanje močnega skrivnega niza. Namestite CoffeeScript, saj bo uporabljen za prevajanje datotek Taiga, napisanih z okvirjem CoffeeScript.
sudo npm install -g coffee-script gulp
Dodajte novega uporabnika sistema za Taigo, da zagotovite, da se procesi Taiga izvajajo kot neprivilegirani uporabnik.
sudo useradd -s /bin/bash taiga
sudo su - taiga
Opomba : Od zdaj naprej je treba vse ukaze izvajati kot neprivilegirani uporabnik, taiga
dokler vas ne pozove, da preklopite nazaj na sudo
uporabnika.
Ustvarite nov imenik za shranjevanje dnevniških datotek.
mkdir -p ~/logs
Klonirajte zaledni repozitorij Taiga iz GitHuba in preverite najnovejšo stabilno vejo.
git clone https://github.com/taigaio/taiga-back.git taiga-back
cd taiga-back
git checkout stable
Konfigurirajte virtualenvwrapper
za uporabo Pythona 3.6 namesto privzetega Pythona.
echo "VIRTUALENVWRAPPER_PYTHON='/bin/python3.6'" >> ~/.bashrc
echo "source /usr/bin/virtualenvwrapper.sh" >> ~/.bashrc
Končno, izvor ~/.bashrc
datoteke.
source ~/.bashrc
Zdaj ustvarite novo virtualno okolje za Taigo s Pythonom 3.6.
mkvirtualenv -p /bin/python3.6 taiga
pip3.6 install --upgrade setuptools
Namestite zahtevane odvisnosti Python z uporabo pip
.
pip3.6 install -r requirements.txt
Bazo podatkov napolnite s potrebnimi začetnimi podatki.
python3.6 manage.py migrate --noinput
python3.6 manage.py loaddata initial_user
python3.6 manage.py loaddata initial_project_templates
python3.6 manage.py compilemessages
python3.6 manage.py collectstatic --noinput
Zgornji ukazi bodo zapisali podatke v bazo podatkov PostgreSQL. Taiga pošilja tudi nekaj demo ali vzorčnih podatkov, ki so lahko uporabni za oceno izdelka. Če želite namestiti vzorčne podatke, zaženite naslednje.
python3.6 manage.py sample_data
Opomba : Namestitev vzorčnih podatkov je neobvezna in je namenjena samo oceni izdelka.
Preden nadaljujemo z ustvarjanjem konfiguracijske datoteke za backend Taiga, moramo ustvariti skrivni niz. Ta niz bo uporabljen za šifriranje podatkov seje.
Ustvari naključni niz 64 znakov.
pwgen -s -1 64
Izhod bi morali videti kot naključni niz.
(taiga) [taiga@vultr taiga-back]$ pwgen -s -1 64
CZfjWjHctPwnLZsDysWqaZcYfRCviHbI4fVRwfhpbtAHPNBtmkcegpwpYjTtEziJ
Ustvarite novo konfiguracijsko datoteko za Taiga Backend.
nano ~/taiga-back/settings/local.py
Napolnite datoteko z naslednjo kodo.
from .common import *
MEDIA_URL = "https://taiga.example.com/media/"
STATIC_URL = "https://taiga.example.com/static/"
SITES["front"]["scheme"] = "https"
SITES["front"]["domain"] = "taiga.example.com"
SECRET_KEY = "Generated_Secret_Key"
DEBUG = False
PUBLIC_REGISTER_ENABLED = True
DEFAULT_FROM_EMAIL = "[email protected]"
SERVER_EMAIL = DEFAULT_FROM_EMAIL
#CELERY_ENABLED = True
EVENTS_PUSH_BACKEND = "taiga.events.backends.rabbitmq.EventsPushBackend"
EVENTS_PUSH_BACKEND_OPTIONS = {"url": "amqp://taiga:StrongMQPassword@localhost:5672/taiga"}
# Uncomment and populate with proper connection parameters
# for enable email sending. EMAIL_HOST_USER should end by @domain.tld
#EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
#EMAIL_USE_TLS = False
#EMAIL_HOST = "mail.example.com"
#EMAIL_HOST_USER = "[email protected]"
#EMAIL_HOST_PASSWORD = "SMTPPassword"
#EMAIL_PORT = 25
# Uncomment and populate with proper connection parameters
# for enable github login/singin.
#GITHUB_API_CLIENT_ID = "yourgithubclientid"
#GITHUB_API_CLIENT_SECRET = "yourgithubclientsecret"
Make sure to replace the example domain name with the actual one in the above code. Also, replace Generated_Secret_Key
with the actual secret key and StrongMQPassword
with the actual password for the Taiga message queue user. If you have an SMTP server ready and you wish to use email sending features immediately, you can uncomment the email options and set the appropriate values. If you do not have a mail server ready, you can skip setting up the email feature for now and set it later in this configuration file.
If you wish to enable GitHub login, create an application in GitHub and provide the API client ID and client secret.
To immediately check if the Taiga backend can be started, run the built-in Django server.
workon taiga
python manage.py runserver
You will see the following output if the server has started successfully.
(taiga) [taiga@vultr taiga-back]$ workon taiga
(taiga) [taiga@vultr taiga-back]$ python manage.py runserver
Trying import local.py settings...
Trying import local.py settings...
Performing system checks...
System check identified no issues (0 silenced).
October 25, 2017 - 07:07:28
Django version 1.10.6, using settings 'settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
To verify if the API can be accessed, open another terminal session and run the following.
curl http://127.0.0.1:8000/api/v1/
You will see a similar output returned by the API call.
[user@vultr ~]$ curl http://127.0.0.1:8000/api/v1/
{"locales": "http://127.0.0.1:8000/api/v1/locales", "auth": "http://127.0.0.1:8000/api/v1/auth", "users": "http://127.0.0.1:8000/api/v1/users", "roles": "http://127.0.0.1:8000/api/v1/roles", "user-storage": "http://127.0.0.1:8000/api/v1/user-storage", "notify-policies": "http://127.0.0.1:8000/api/v1/notify-policies", "projects": "http://127.0.0.1:8000/api/v1/projects", "projects/(?P<resource_id>\\d+)/fans": "http://127.0.0.1:8000/api/v1/projects/(?P<resource_id>\\d+)/fans", "projects/(?P<resource_id>\\d+)/watchers": "http://127.0.0.1:8000/api/v1/projects/(?P<resource_id>\\d+)/watchers", "project-templates": "http://127.0.0.1:8000/api/v1/project-templates",
Stop the Taiga backend server by pressing "Ctrl + C
" and deactivate the virtual environment.
deactivate
The Taiga frontend is the component of Taiga which serves the Web user interface. Clone the Taiga frontend repository from Github and checkout the latest stable branch.
cd ~
git clone https://github.com/taigaio/taiga-front-dist.git taiga-front-dist
cd taiga-front-dist
git checkout stable
Create a new configuration file for the Taiga frontend.
nano ~/taiga-front-dist/dist/conf.json
Populate the file with this.
{
"api": "https://taiga.example.com/api/v1/",
"eventsUrl": "wss://taiga.example.com/events",
"eventsMaxMissedHeartbeats": 5,
"eventsHeartbeatIntervalTime": 60000,
"eventsReconnectTryInterval": 10000,
"debug": true,
"debugInfo": false,
"defaultLanguage": "en",
"themes": ["taiga"],
"defaultTheme": "taiga",
"publicRegisterEnabled": true,
"feedbackEnabled": true,
"privacyPolicyUrl": null,
"termsOfServiceUrl": null,
"maxUploadFileSize": null,
"contribPlugins": [],
"tribeHost": null,
"importers": [],
"gravatar": true
}
Make sure to replace the example
domain with the actual domain. You can also change the default language and other parameters in the above configuration.
Apart from the frontend and backend, we also need to install Taiga events. Taiga events is a web socket server, and it enables the Taiga frontend to show real-time changes in modules such as backlog, Kanban and more. It uses the RabbitMQ server for message processing.
Clone the Taiga events repository from Github.
cd ~
git clone https://github.com/taigaio/taiga-events.git taiga-events
cd taiga-events
Install the Node.js dependencies using npm
.
npm install
Create a new configuration file for Taiga events.
nano ~/taiga-events/config.json
Populate the file with the following.
{
"url": "amqp://taiga:StrongMQPassword@localhost:5672/taiga",
"secret": "Generated_Secret_Key",
"webSocketServer": {
"port": 8888
}
}
Replace Generated_Secret_Key
with the actual 64 characters long secret key which you have generated in the past. The secret key should be exactly the same as the key you provided in the Taiga backend configuration file. Also, update the StrongMQPassword
with the actual password for Taiga message queue user.
Circus is a process manager for Python applications. We will use Circus to run Taiga backend and events.
Switch back to the sudo
user.
exit
Note: From now you will need to run the commands using sudo
user.
Install Circus using pip
.
sudo pip3.6 install circus
Create new directories to store Circus configurations.
sudo mkdir /etc/circus
sudo mkdir /etc/circus/conf.d
Create the default configuration file for Circus.
sudo nano /etc/circus/circus.ini
Populate the file with the following configuration.
[circus]
check_delay = 5
endpoint = tcp://127.0.0.1:5555
pubsub_endpoint = tcp://127.0.0.1:5556
include = /etc/circus/conf.d/*.ini
Create a new Circus configuration file for running the Taiga backend.
sudo nano /etc/circus/conf.d/taiga.ini
Populate the file with the following.
[watcher:taiga]
working_dir = /home/taiga/taiga-back
cmd = gunicorn
args = -w 3 -t 60 --pythonpath=. -b 127.0.0.1:8001 taiga.wsgi
uid = taiga
numprocesses = 1
autostart = true
send_hup = true
stdout_stream.class = FileStream
stdout_stream.filename = /home/taiga/logs/gunicorn.stdout.log
stdout_stream.max_bytes = 10485760
stdout_stream.backup_count = 4
stderr_stream.class = FileStream
stderr_stream.filename = /home/taiga/logs/gunicorn.stderr.log
stderr_stream.max_bytes = 10485760
stderr_stream.backup_count = 4
[env:taiga]
PATH = /home/taiga/.virtualenvs/taiga/bin:$PATH
TERM=rxvt-256color
SHELL=/bin/bash
USER=taiga
LANG=en_US.UTF-8
HOME=/home/taiga
PYTHONPATH=/home/taiga/.virtualenvs/taiga/lib/python3.6/site-packages
Create a new Circus configuration for running Taiga Events.
sudo nano /etc/circus/conf.d/taiga-events.ini
Populate the file with the following.
[watcher:taiga-events]
working_dir = /home/taiga/taiga-events
cmd = /usr/bin/coffee
args = index.coffee
uid = taiga
numprocesses = 1
autostart = true
send_hup = true
stdout_stream.class = FileStream
stdout_stream.filename = /home/taiga/logs/taigaevents.stdout.log
stdout_stream.max_bytes = 10485760
stdout_stream.backup_count = 12
stderr_stream.class = FileStream
stderr_stream.filename = /home/taiga/logs/taigaevents.stderr.log
stderr_stream.max_bytes = 10485760
stderr_stream.backup_count = 12
Now we will need to create a systemd
service file to run Circus. Using systemd
will ensure that Circus is automatically started during reboot and failures.
sudo nano /etc/systemd/system/circus.service
Populate the file.
[Unit]
Description=Circus process manager
After=syslog.target network.target nss-lookup.target
[Service]
Type=simple
ExecReload=/usr/bin/circusctl reload
ExecStart=/usr/bin/circusd /etc/circus/circus.ini
Restart=always
RestartSec=5
[Install]
WantedBy=default.target
Zaženite Circus in omogočite samodejni zagon ob zagonu.
sudo systemctl start circus
sudo systemctl enable circus
Preverite stanje cirkusa.
circusctl status
Videli boste naslednji izhod.
[user@vultr ~]$ circusctl status
taiga: active
taiga-events: active
Zdaj imamo Taigo uspešno nameščeno in zagnano. Preden ga lahko uporabimo, moramo izpostaviti namestitev s katerim koli produkcijskim spletnim strežnikom.
Spletni strežnik Nginx bomo uporabili kot povratni proxy za serviranje aplikacije uporabnikom. Pridobili in namestili bomo tudi SSL certifikate podjetja Let's Encrypt.
Namestite Nginx in Certbot. Certbot je uradni odjemalec, ki izdaja potrdila za Let's Encrypt CA.
sudo yum -y install nginx certbot
Prilagodite nastavitev požarnega zidu, da omogočite standard HTTP
in HTTPS
vrata skozi požarni zid, saj mora Certbot vzpostaviti povezavo HTTP za preverjanje pooblastila domene.
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
Opomba : Če želite pridobiti potrdila od Let's Encrypt CA, morate zagotoviti, da je domena, za katero želite generirati potrdila, usmerjena proti strežniku. Če ne, naredite potrebne spremembe v zapisih DNS vaše domene in počakajte, da se DNS razširi, preden znova pošljete zahtevo za potrdilo. Certbot preveri avtoriteto domene, preden zagotovi potrdila.
Zdaj uporabite vgrajeni spletni strežnik v Certbot, da ustvarite potrdila za vašo domeno.
sudo certbot certonly --standalone -d taiga.example.com
Ustvarjena potrdila bodo verjetno shranjena v /etc/letsencrypt/live/taiga.example.com/
imeniku. Potrdilo SSL bo ohranjeno kot fullchain.pem
, zasebni ključ pa bo shranjen kot privkey.pem
.
Potrdila Let's Encrypt potečejo v 90 dneh, zato je priporočljivo, da nastavite samodejno podaljšanje za potrdila s pomočjo opravil Cron. Cron je sistemska storitev, ki se uporablja za izvajanje občasnih opravil.
Odprite datoteko opravila cron.
sudo crontab -e
Dodajte naslednjo vrstico.
0 0 * * * /usr/bin/certbot renew --quiet
Zgornje opravilo cron se bo izvajalo vsak dan ob polnoči. Če potrdilo poteče, bo potrdila samodejno podaljšana.
Ustvari močan Diffie-Hellman
parameter. Zagotavlja dodatno plast varnosti za izmenjavo podatkov med gostiteljem in strežnikom.
sudo openssl dhparam -out /etc/ssl/dhparam.pem 2048
Ustvarite nov blok strežnika Nginx, ki bo služil vmesniku Taiga.
sudo nano /etc/nginx/conf.d/taiga.conf
Napolnite datoteko z naslednjim.
server {
listen 80;
server_name taiga.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name taiga.example.com;
access_log /home/taiga/logs/nginx.access.log;
error_log /home/taiga/logs/nginx.error.log;
large_client_header_buffers 4 32k;
client_max_body_size 50M;
charset utf-8;
index index.html;
# Frontend
location / {
root /home/taiga/taiga-front-dist/dist/;
try_files $uri $uri/ /index.html;
}
# Backend
location /api {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8001/api;
proxy_redirect off;
}
location /admin {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8001$request_uri;
proxy_redirect off;
}
# Static files
location /static {
alias /home/taiga/taiga-back/static;
}
# Media files
location /media {
alias /home/taiga/taiga-back/media;
}
location /events {
proxy_pass http://127.0.0.1:8888/events;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_connect_timeout 7d;
proxy_send_timeout 7d;
proxy_read_timeout 7d;
}
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header Public-Key-Pins 'pin-sha256="klO23nT2ehFDXCfx3eHTDRESMz3asj1muO+4aIdjiuY="; pin-sha256="633lt352PKRXbOwf4xSEa1M517scpD3l5f79xMD9r9Q="; max-age=2592000; includeSubDomains';
ssl on;
ssl_certificate /etc/letsencrypt/live/taiga.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/taiga.example.com/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK';
ssl_session_cache shared:SSL:10m;
ssl_dhparam /etc/ssl/dhparam.pem;
ssl_stapling on;
ssl_stapling_verify on;
}
Ne pozabite spremeniti imena domene in poti do potrdil SSL.
Zdaj lahko znova zaženete spletni strežnik Nginx in omogočite, da se samodejno zažene ob zagonu.
sudo systemctl restart nginx
sudo systemctl status nginx
Končno popravite lastništvo in dovoljenje za datoteke Taiga.
sudo chown -R taiga:taiga /home/taiga/
sudo chmod o+x /home/taiga/
Zdaj lahko dostopate do namestitve Taiga tako, da obiščete https://taiga.example.com
. Prijavite se z začetnim skrbniškim računom z uporabniškim imenom " admin
" in geslom " 123123
". Vaša namestitev je zdaj pripravljena za uporabo v proizvodnji. Začnite z ustvarjanjem novega projekta ali oceno izdelka. Če že upravljate projekt na Githubu, Jira ali Trello, lahko projekte preprosto uvozite v Taigo z uvozniki .
Uporaba drugega sistema? osTicket je odprtokodni sistem za izdajo vstopnic za podporo strankam. Izvorna koda osTicket je javno gostovana na Githubu. V tej vadnici
Uporaba drugega sistema? Apache OpenMeetings je odprtokodna aplikacija za spletne konference. Napisana je v Javi in podpira več strežnikov baz podatkov. jaz
Uporaba drugega sistema? Microweber je odprtokodna povleci in spusti CMS in spletna trgovina. Izvorna koda Microweber gostuje na GitHubu. Ta vodnik vam bo pokazal
Uporaba drugega sistema? Akaunting je brezplačna, odprtokodna in spletna računovodska programska oprema, zasnovana za mala podjetja in samostojne delavce. Zgrajena je pametno
Uporaba drugega sistema? InvoicePlane je brezplačna in odprtokodna aplikacija za izdajanje računov. Njegovo izvorno kodo lahko najdete v tem repozitoriju Github. Ta vodnik
Uporaba drugega sistema? Open Web Analytics (OWA) je odprtokodni program za spletno analitiko, ki ga lahko uporabite za sledenje in analizo, kako ljudje uporabljajo vaše spletno mesto.
Uporaba drugega sistema? Uvod Microweber je odprtokodna povleci in spusti CMS in spletna trgovina. Izvorna koda Microweber gostuje na GitHubu. Ta vodnik
Uporaba drugega sistema? Matomo (prej Piwik) je odprtokodna analitična platforma, odprta alternativa Google Analytics. Vir Matomo gostuje o
Uporaba drugega sistema? Zammad je odprtokodni sistem za pomoč uporabnikom/prodaja vstopnic, zasnovan za ekipe za podporo strankam. Z Zammadom, storitev za stranke
Uporaba drugega sistema? X-Cart je izjemno prilagodljiva odprtokodna platforma za e-trgovino s številnimi funkcijami in integracijami. Izvorna koda X-Cart je hoste
Uporaba drugega sistema? Matomo (prej Piwik) je odprtokodna analitična platforma, odprta alternativa Google Analytics. Vir Matomo gostuje o
Uporaba drugega sistema? Taiga je brezplačna in odprtokodna aplikacija za vodenje projektov. Za razliko od drugih orodij za vodenje projektov, Taiga uporablja inkremente
Uporaba drugega sistema? Osclass je odprtokodni projekt, ki vam omogoča preprosto ustvarjanje spletnega mesta za male oglase brez kakršnega koli tehničnega znanja. Njegov vir
Uporaba drugega sistema? X-Cart je izjemno prilagodljiva odprtokodna platforma za e-trgovino s številnimi funkcijami in integracijami. Izvorna koda X-Cart je hoste
Uporaba drugega sistema? Dolibarr je odprtokodno načrtovanje virov podjetja (ERP) in upravljanje odnosov s strankami (CRM) za podjetja. Dolibar
Uporaba drugega sistema? Akaunting je brezplačna, odprtokodna in spletna računovodska programska oprema, zasnovana za mala podjetja in samostojne delavce. Zgrajena je pametno
Uporaba drugega sistema? Uvod Attendize je odprtokodna platforma za prodajo vstopnic in upravljanje dogodkov, ki temelji na Laravel PHP Framework. Attendiz
Uporaba drugega sistema? Uvod Attendize je odprtokodna platforma za prodajo vstopnic in upravljanje dogodkov, ki temelji na Laravel PHP Framework. Attendiz
Uporaba drugega sistema? Sentrifugo HRM je brezplačna in odprtokodna aplikacija za upravljanje človeških virov. Je bogat s funkcijami in ga je enostavno konfigurirati
Pydio je alternativa programski opremi, kot sta ownCloud in NextCloud. Pydio je tudi odprtokoden, kar pomeni, da ne stane nič za uporabo in ga upravlja a
Umetna inteligenca ni v prihodnosti, tukaj je prav v sedanjosti. V tem blogu preberite, kako so aplikacije umetne inteligence vplivale na različne sektorje.
Ste tudi vi žrtev DDOS napadov in ste zmedeni glede načinov preprečevanja? Preberite ta članek, če želite rešiti svoja vprašanja.
Morda ste že slišali, da hekerji zaslužijo veliko denarja, a ste se kdaj vprašali, kako zaslužijo takšen denar? razpravljajmo.
Ali želite videti revolucionarne izume Googla in kako so ti izumi danes spremenili življenje vsakega človeka? Nato preberite v blogu in si oglejte Googlove izume.
Koncept samovozečih avtomobilov, ki zapeljejo na ceste s pomočjo umetne inteligence, so sanje, ki jih imamo že nekaj časa. A kljub številnim obljubam jih ni nikjer. Preberite ta blog, če želite izvedeti več…
Ker se znanost hitro razvija in prevzame veliko naših prizadevanj, se povečuje tudi tveganje, da se podvržemo nerazložljivi singularnosti. Preberite, kaj bi za nas lahko pomenila singularnost.
Metode shranjevanja podatkov so se lahko razvijale od rojstva podatkov. Ta blog pokriva razvoj shranjevanja podatkov na podlagi infografike.
Preberite blog, če želite na najpreprostejši način spoznati različne plasti v arhitekturi velikih podatkov in njihove funkcionalnosti.
V tem digitalno vodenem svetu so pametne naprave za dom postale ključni del življenja. Tukaj je nekaj neverjetnih prednosti pametnih naprav za dom o tem, kako naredijo naše življenje vredno življenja in poenostavijo.
Pred kratkim je Apple izdal macOS Catalina 10.15.4 dopolnilno posodobitev za odpravo težav, vendar se zdi, da posodobitev povzroča več težav, ki vodijo do opečenja računalnikov Mac. Preberite ta članek, če želite izvedeti več