https://wiki.archlinux.org/api.php?action=feedcontributions&user=Hashworks&feedformat=atomArchWiki - User contributions [en]2024-03-29T10:47:11ZUser contributionsMediaWiki 1.41.0https://wiki.archlinux.org/index.php?title=Zram&diff=782615Zram2023-07-05T20:08:36Z<p>Hashworks: daemon-reload link is dead, link to man page instead</p>
<hr />
<div>{{Lowercase title}}<br />
[[ja:zram]]<br />
[[ru:Zram]]<br />
[[zh-hans:Zram]]<br />
[[Category:Kernel]]<br />
{{Related articles start}}<br />
{{Related|Swap}}<br />
{{Related|zswap}}<br />
{{Related articles end}}<br />
<br />
[https://docs.kernel.org/admin-guide/blockdev/zram.html zram], formerly called compcache, is a Linux kernel module for creating a compressed block device in RAM, i.e. a RAM disk with on-the-fly disk compression. The block device created with zram can then be used for swap or as a general-purpose RAM disk. The two most common uses for zram are for the storage of temporary files ({{ic|/tmp}}) and as a swap device. Initially, zram had only the former function, hence the original name "compcache" ("compressed cache").<br />
<br />
== Usage as swap ==<br />
<br />
Initially the created zram block device does not reserve or use any RAM. Only as files need or want to be swapped out, they will be compressed and moved into the zram block device. The zram block device will then dynamically grow or shrink as required. <br />
<br />
Example (System has 32 GiB RAM, zram is configured with 16 GiB RAM, we assume a 1:4 compression ratio):<br />
<br />
* Worst case (RAM and zram completely "filled"): 16 GiB RAM + 64 GiB zram<br />
* Normal usage without swapping: 32 GiB RAM + 0 GiB zram<br />
* Normal usage with light swapping: 30 GiB RAM + 8 GiB zram<br />
* Without any zram configuration: 32 GiB RAM<br />
<br />
Therefore, zram always offers the advantage of being able to store more content in RAM. <br />
<br />
{{Note|<br />
* Make sure to first [[Zswap#Toggling zswap|disable zswap]] which is enabled by default to avoid zswap acting as a swap cache in front of zram. Having both enabled also results in incorrect {{man|8|zramctl}} statistics as zram remains mostly unused; this is because zswap intercepts and compresses memory pages being swapped out before they can reach zram.<br />
* Hibernating to swap on zram is not supported, even when zram is configured with a backing device on permanent storage. ''logind'' will protect against trying to hibernate to a swap space on zram.<br />
}}<br />
<br />
=== Manually ===<br />
<br />
To set up one zstd compressed zram device with 32GiB capacity and a higher-than-normal priority (only for the current session):<br />
<br />
# modprobe zram<br />
# zramctl /dev/zram0 --algorithm zstd --size 32G<br />
# mkswap -U clear /dev/zram0<br />
# swapon --priority 100 /dev/zram0<br />
<br />
To disable it again, either reboot or run:<br />
<br />
# swapoff /dev/zram0<br />
# modprobe -r zram<br />
<br />
A detailed explanation of all steps, options and potential problems is provided in the [https://docs.kernel.org/admin-guide/blockdev/zram.html official documentation of the zram module].<br />
<br />
For a permanent solution, use a method from one of the following sections.<br />
<br />
=== Using a udev rule ===<br />
<br />
The example below describes how to set up swap on zram automatically at boot with a single udev rule. No extra package should be needed to make this work.<br />
<br />
Explicitly [[load the module at boot]]:<br />
<br />
{{hc|/etc/modules-load.d/zram.conf|<br />
zram<br />
}}<br />
<br />
Create the following [[udev rule]] adjusting the {{ic|disksize}} attribute as necessary: <br />
<br />
{{hc|/etc/udev/rules.d/99-zram.rules|2=<br />
ACTION=="add", KERNEL=="zram0", ATTR{comp_algorithm}="zstd", ATTR{disksize}="4G", RUN="/usr/bin/mkswap -U clear /dev/%k", TAG+="systemd"<br />
}}<br />
<br />
Add {{ic|/dev/zram}} to your [[fstab]] with a higher than default priority:<br />
<br />
{{hc|/etc/fstab|2=<br />
/dev/zram0 none swap defaults,pri=100 0 0<br />
}}<br />
<br />
{{Note|The swap space on zram cannot be referred to by its LABEL or UUID in fstab since [[udev]] does not create {{ic|/dev/disk/by-label/*}} and {{ic|/dev/disk/by-uuid/*}} symlinks for zram devices.}}<br />
<br />
=== Using zram-generator ===<br />
<br />
[https://github.com/systemd/zram-generator/blob/main/README.md zram-generator] provides a {{ic|systemd-zram-setup@.service}} unit to automatically initialize zram devices without users needing to [[enable/start]] the template or its instances. See {{man|8|zram-generator}} and {{man|5|zram-generator.conf}}.<br />
<br />
For example, to create a zram swap device using {{ic|zstd}} and half of the entire available ram, [[install]] {{Pkg|zram-generator}}, then create {{ic|/etc/systemd/zram-generator.conf}} with the following:<br />
<br />
{{hc|/etc/systemd/zram-generator.conf|2=<br />
[zram0]<br />
zram-size = ram / 2<br />
compression-algorithm = zstd<br />
swap-priority = 100<br />
fs-type = swap<br />
}}<br />
<br />
Run [https://man.archlinux.org/man/systemctl.1#Manager_State_Commands daemon-reload], then [[start]] your configured {{ic|systemd-zram-setup@zram''N''.service}} instance(s).<br />
<br />
You can [[Swap#Swap space|check the swap status]] of your configured {{ic|/dev/zram''N''}} devices by reading the [[unit status]] of your {{ic|systemd-zram-setup@zram''N''.service}} instance(s), or by using {{man|8|zramctl}}.<br />
<br />
=== Using zramswap ===<br />
<br />
{{AUR|zramswap}} provides an automated script for setting up a swap with a higher priority and a default size of 20% of the RAM size of your system. To do this automatically on every boot, [[enable]] {{ic|zramswap.service}}.<br />
<br />
=== Using zramd ===<br />
<br />
{{AUR|zramd}} allows to setup zram automatically using zstd compression by default, its configuration can be changed at {{ic|/etc/default/zramd}}. It can be started at boot by enabling the {{ic|zramd.service}} unit.<br />
<br />
== Tips and tricks ==<br />
<br />
=== Multiple zram devices ===<br />
<br />
By default, loading the {{ic|zram}} module creates a single {{ic|/dev/zram0}} device.<br />
<br />
If you need more than one {{ic|/dev/zram}} device, specify the amount using the {{ic|num_devices}} [[kernel module parameter]] or [https://docs.kernel.org/admin-guide/blockdev/zram.html#add-remove-zram-devices add them as needed afterwards].<br />
<br />
=== Optimizing swap on zram ===<br />
<br />
{{Expansion|Advises the user to set "random" options without explanation.}}<br />
<br />
Since zram behaves differently than disk swap, we can configure the systems swap to take full potential of the zram advantages:<br />
<br />
{{hc|/etc/sysctl.d/99-vm-zram-parameters.conf|2=<br />
vm.swappiness = 180<br />
vm.watermark_boost_factor=0<br />
vm.watermark_scale_factor = 125<br />
vm.page-cluster=0<br />
}}<br />
<br />
== See also ==<br />
<br />
* [[Wikipedia:zram]]<br />
* https://github.com/pop-os/default-settings/pull/163<br />
* https://www.reddit.com/r/pop_os/comments/znh9n6/help_test_a_zram_optimization_for_pop_os/</div>Hashworkshttps://wiki.archlinux.org/index.php?title=RabbitMQ&diff=723700RabbitMQ2022-03-20T14:25:31Z<p>Hashworks: Fix MQTT username definition</p>
<hr />
<div>[[Category:Networking]]<br />
[[ja:RabbitMQ]]<br />
[[ru:RabbitMQ]]<br />
[https://www.rabbitmq.com/ RabbitMQ] is a messaging broker, an intermediary for messaging. It gives your applications a common platform to send and receive messages, and your messages a safe place to live until received.<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{Pkg|rabbitmq}} package.<br />
<br />
== Configuration ==<br />
<br />
No configuration should be needed. Simply [[start]] and/or [[enable]] {{ic|rabbitmq.service}}. <br />
<br />
Default configuration file location {{ic|/etc/rabbitmq/rabbitmq-env.conf}}. See more about configuration [https://www.rabbitmq.com/configure.html on the official docs]<br />
<br />
=== Enabling MQTT ===<br />
<br />
RabbitMQ can act as MQTT server. For this functionality to work following plugin needs to be enabled:<br />
<br />
# rabbitmq-plugins enable rabbitmq_mqtt<br />
<br />
RabbitMQ service needs to be restarted for this change to take effect.<br />
<br />
Clients need to authenticate before they can post to topics. RabbitMQ segregates traffic via virtual hosts, you need to issue `'''configured_vhost_name:your_user_name'''` as user name in order to authenticate.<br />
<br />
=== Enabling HTTP admin ===<br />
<br />
To enable the HTTP admin page:<br />
<br />
# rabbitmq-plugins enable rabbitmq_management<br />
<br />
Then navigate to {{ic|<ip_address_of_host>:15672}}. Default credentials are {{ic|username:guest password:guest}}<br />
<br />
To allow remote machines to connect to the HTTP admin page edit/create {{ic|/etc/rabbitmq/rabbitmq.config}}:<br />
<br />
[{rabbit, [{loopback_users, []}]}].<br />
<br />
== Troubleshooting ==<br />
<br />
=== Service stop hangs for a minutes ===<br />
<br />
Rabbitmq package install epmd (Erlang Port Mapping Daemons) as dependency. If you run rabbitmq server via systemd, it will start detached epmd process, that will not be stopped with {{ic|systemctl stop}}. You can avoid this, if add {{ic|1=After=epmd.service}} in {{ic|[Unit]}} section. Do not forget to reload daemons.<br />
<br />
=== Changed hostname ===<br />
<br />
If you have changed your hostname after you installed rabbitmq, it will no longer be able to start.<br />
This is due to the {{ic|NODENAME}} specified in {{ic|/etc/rabbitmq/rabbitmq-env.conf}}.<br />
Update it to reflect your new hostname, for example:<br />
<br />
{{hc|/etc/rabbitmq/rabbitmq-env.conf|<nowiki><br />
NODENAME=rabbit@my-new-hostname<br />
...<br />
</nowiki>}}<br />
<br />
=== Upgraded RabbitMQ to latest version and cannot start ===<br />
<br />
This might cause your {{ic|/etc/rabbitmq/rabbitmq-env.conf}} to get the wrong {{ic|NODENAME}}.<br />
For example, it might cause it to add another {{ic|@hostname}} part. In any case, this can be fixed by following [[#Changed hostname]].<br />
<br />
=== Erlang cookie error ===<br />
<br />
Failure to authenticate might be caused by a wrong rabbitmq HOME setting:<br />
Authentication failed (rejected by the remote node), please check the Erlang cookie<br />
...<br />
home dir: /root<br />
<br />
Home can be set in the configuration file:<br />
<br />
{{hc|/etc/rabbitmq/rabbitmq-env.conf|<nowiki><br />
...<br />
HOME=/var/lib/rabbitmq<br />
...<br />
</nowiki>}}<br />
<br />
=== can't establish TCP connection ===<br />
<br />
If you see this error then make sure first entry with your host name within {{ic|/etc/hosts}} contains the same IP address as specified within {{ic|/etc/rabbitmq/rabbitmq-env.conf}} (this error is common if you configure rabbitmq to bind to specific interface).<br />
<br />
=== Can't connect with pika Python client through localhost ===<br />
<br />
Trying to connect through localhost with pika Python client, raises an exception:<br />
<br />
...<br />
pika.exceptions.ProbableAccessDeniedError: (541, "INTERNAL_ERROR - access to vhost '/' refused for user 'guest': vhost '/' is down")<br />
<br />
Default configuration file {{ic|/etc/rabbitmq/rabbitmq-env.conf}} of the package is:<br />
<br />
{{hc|/etc/rabbitmq/rabbitmq-env.conf|2=<br />
NODENAME=rabbit@localhost<br />
NODE_IP_ADDRESS=0.0.0.0<br />
NODE_PORT=5672<br />
}}<br />
<br />
Removing the username part of {{ic|NODENAME}}, and leaving the hostname of the machine (which should match the one shown in {{ic|/etc/hosts}}), fixes the issue:<br />
<br />
{{hc|/etc/rabbitmq/rabbitmq-env.conf|2=<br />
NODENAME=localhost<br />
NODE_IP_ADDRESS=0.0.0.0<br />
NODE_PORT=5672<br />
}}<br />
<br />
== See also ==<br />
<br />
* [[Wikipedia:RabbitMQ]]<br />
* [https://erlang.org/doc/man/kernel_app.html erlang kernel parameters] - kernel parameters for advanced configuration<br />
* [https://github.com/rabbitmq/rabbitmq-server/blob/master/deps/rabbit/docs/rabbitmq.conf.example rabbitmq.config example] - rabbitmq.config example (not included with rabbitmq package)</div>Hashworkshttps://wiki.archlinux.org/index.php?title=OpenSearch&diff=708917OpenSearch2022-01-07T19:21:57Z<p>Hashworks: Add link to compatible AUR packages</p>
<hr />
<div>[[Category:Database management systems]]<br />
[[ja:OpenSearch]]<br />
From [[Wikipedia:OpenSearch (software)]]:<br />
:OpenSearch is a family of software consisting of a search engine (also named OpenSearch), and OpenSearch Dashboards, a data visualization dashboard for that search engine. The software started in 2021 as a fork of Elasticsearch and Kibana, with development led by Amazon Web Services.<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{Pkg|opensearch}} package.<br />
<br />
Various plugins are listed as optional dependencies which can be installed according to your needs. If you are using {{Pkg|opensearch-dashboards}} remember to install the corresponding Dashboards plugins.<br />
<br />
== Running ==<br />
<br />
If you do not have a keystore at {{ic|/etc/opensearch/opensearch.keystore}}, you need to create one before starting Elasticsearch:<br />
<br />
# opensearch-keystore create<br />
<br />
Afterwards, you can [[start/enable]] {{ic|opensearch.service}}.<br />
<br />
Ensure Elasticsearch is running and accessible by using {{pkg|curl}}, {{ic|curl '<protocol>://<host>:<port>'}}:<br />
{{hc|curl http://127.0.0.1:9200|2=<br />
<nowiki><br />
{<br />
"name" : "opensearch.example.net",<br />
"cluster_name" : "opensearch",<br />
"cluster_uuid" : "TRylpzbsQB-Nk2KgktTQtA",<br />
"version" : {<br />
"number" : "7.10.2",<br />
"build_type" : "tar",<br />
"build_hash" : "unknown",<br />
"build_date" : "2022-01-07T15:57:30.358290Z",<br />
"build_snapshot" : false,<br />
"lucene_version" : "8.10.1",<br />
"minimum_wire_compatibility_version" : "6.8.0",<br />
"minimum_index_compatibility_version" : "6.0.0-beta1"<br />
},<br />
"tagline" : "The OpenSearch Project: https://opensearch.org/"<br />
}<br />
</nowiki><br />
}}<br />
<br />
== Configuration ==<br />
<br />
The main OpenSearch configuration file is well-documented and located at {{ic|/etc/opensearch/opensearch.yml}}. The [https://opensearch.org/docs/latest/opensearch/configuration/ official documentation] should prove helpful as well.<br />
<br />
* By default OpenSearch is public accessible, it may be preferred to allow only access on the host instead:<br />
<br />
network.host: 127.0.0.1<br />
<br />
* It is possible to use a custom port instead of the default {{ic|9200}}:<br />
<br />
http.port: 9200<br />
<br />
== Usage ==<br />
<br />
The OpenSearch server management (document maintenance, performing search, etc.) is usually done by [https://opensearch.org/docs/latest/clients/index/ clients] that should provide a seamless integration with the preferred programming language.<br />
<br />
Useful tools to manage OpenSearch instances and clusters like {{Pkg|opensearch-dashboards}} and {{Pkg|opensearch-cli}} are also available to simplify management.<br />
<br />
== Upgrading from Elasticsearch OSS ==<br />
<br />
To upgrade multi-node clusters of Elasticsearch OSS to OpenSearch one should consult the [https://opensearch.org/docs/latest/upgrade-to/upgrade-to/ official guide].<br />
<br />
For standalone nodes it might suffice to copy any configuration changes and move the index data to its new location:<br />
# systemctl stop elasticsearch<br />
# cp -r /var/lib/elasticsearch/nodes /var/lib/opensearch/<br />
# chown opensearch:opensearch -R /var/lib/opensearch<br />
# systemctl start opensearch<br />
<br />
== Compatibility with Beats OSS ==<br />
<br />
[https://github.com/elastic/beats Beats agents] like filebeat are not compatible with OpenSearch in newer versions, the [https://opensearch.org/docs/latest/clients/agents-and-ingestion-tools/index/ official documentation] provides compatibility tables. Versions {{ic|7.13.X}} and above won't work and all {{ic|7.X}} versions need a workaround in the configuration:<br />
{{hc|/etc/opensearch/opensearch.yml|2=<br />
<nowiki><br />
[...]<br />
compatibility.override_main_response_version: true<br />
[...]<br />
</nowiki><br />
}}<br />
<br />
This will make OpenSearch return {{ic|7.10.2}} as its version number.<br />
<br />
Agent versions compatible with the above workaround are provided in the AUR:<br />
* {{AUR|metricbeat-oss}}<br />
* {{AUR|filebeat-oss}}<br />
* {{AUR|packetbeat-oss}}<br />
* {{AUR|heartbeat-oss}}<br />
* {{AUR|auditbeat-oss}}<br />
* {{AUR|journalbeat-oss}}</div>Hashworkshttps://wiki.archlinux.org/index.php?title=OpenSearch&diff=708911OpenSearch2022-01-07T18:42:59Z<p>Hashworks: Drop cursive from wiki cite</p>
<hr />
<div>[[Category:Database management systems]]<br />
[[ja:OpenSearch]]<br />
From [[Wikipedia:OpenSearch (software)]]:<br />
:OpenSearch is a family of software consisting of a search engine (also named OpenSearch), and OpenSearch Dashboards, a data visualization dashboard for that search engine. The software started in 2021 as a fork of Elasticsearch and Kibana, with development led by Amazon Web Services.<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{Pkg|opensearch}} package.<br />
<br />
Various plugins are listed as optional dependencies which can be installed according to your needs. If you are using {{Pkg|opensearch-dashboards}} remember to install the corresponding Dashboards plugins.<br />
<br />
== Running ==<br />
<br />
If you do not have a keystore at {{ic|/etc/opensearch/opensearch.keystore}}, you need to create one before starting Elasticsearch:<br />
<br />
# opensearch-keystore create<br />
<br />
Afterwards, you can [[start/enable]] {{ic|opensearch.service}}.<br />
<br />
Ensure Elasticsearch is running and accessible by using {{pkg|curl}}, {{ic|curl '<protocol>://<host>:<port>'}}:<br />
{{hc|curl http://127.0.0.1:9200|2=<br />
<nowiki><br />
{<br />
"name" : "opensearch.example.net",<br />
"cluster_name" : "opensearch",<br />
"cluster_uuid" : "TRylpzbsQB-Nk2KgktTQtA",<br />
"version" : {<br />
"number" : "7.10.2",<br />
"build_type" : "tar",<br />
"build_hash" : "unknown",<br />
"build_date" : "2022-01-07T15:57:30.358290Z",<br />
"build_snapshot" : false,<br />
"lucene_version" : "8.10.1",<br />
"minimum_wire_compatibility_version" : "6.8.0",<br />
"minimum_index_compatibility_version" : "6.0.0-beta1"<br />
},<br />
"tagline" : "The OpenSearch Project: https://opensearch.org/"<br />
}<br />
</nowiki><br />
}}<br />
<br />
== Configuration ==<br />
<br />
The main OpenSearch configuration file is well-documented and located at {{ic|/etc/opensearch/opensearch.yml}}. The [https://opensearch.org/docs/latest/opensearch/configuration/ official documentation] should prove helpful as well.<br />
<br />
* By default OpenSearch is public accessible, it may be preferred to allow only access on the host instead:<br />
<br />
network.host: 127.0.0.1<br />
<br />
* It is possible to use a custom port instead of the default {{ic|9200}}:<br />
<br />
http.port: 9200<br />
<br />
== Usage ==<br />
<br />
The OpenSearch server management (document maintenance, performing search, etc.) is usually done by [https://opensearch.org/docs/latest/clients/index/ clients] that should provide a seamless integration with the preferred programming language.<br />
<br />
Useful tools to manage OpenSearch instances and clusters like {{Pkg|opensearch-dashboards}} and {{Pkg|opensearch-cli}} are also available to simplify management.<br />
<br />
== Upgrading from Elasticsearch OSS ==<br />
<br />
To upgrade multi-node clusters of Elasticsearch OSS to OpenSearch one should consult the [https://opensearch.org/docs/latest/upgrade-to/upgrade-to/ official guide].<br />
<br />
For standalone nodes it might suffice to copy any configuration changes and move the index data to its new location:<br />
# systemctl stop elasticsearch<br />
# cp -r /var/lib/elasticsearch/nodes /var/lib/opensearch/<br />
# chown opensearch:opensearch -R /var/lib/opensearch<br />
# systemctl start opensearch<br />
<br />
== Compatibility with Beats OSS ==<br />
<br />
[https://github.com/elastic/beats Beats agents] like filebeat are not compatible with OpenSearch in newer versions, the [https://opensearch.org/docs/latest/clients/agents-and-ingestion-tools/index/ official documentation] provides compatibility tables. Versions {{ic|7.13.X}} and above won't work and all {{ic|7.X}} versions need a workaround in the configuration:<br />
{{hc|/etc/opensearch/opensearch.yml|2=<br />
<nowiki><br />
[...]<br />
compatibility.override_main_response_version: true<br />
[...]<br />
</nowiki><br />
}}<br />
<br />
This will make OpenSearch return {{ic|7.10.2}} as its version number.</div>Hashworkshttps://wiki.archlinux.org/index.php?title=OpenSearch&diff=708910OpenSearch2022-01-07T18:42:11Z<p>Hashworks: Created page with "Category:Database management systems ja:OpenSearch From Wikipedia:OpenSearch (software): :'''''OpenSearch''' is a family of software consisting of a search engine (also named OpenSearch), and ''OpenSearch Dashboards'', a data visualization dashboard for that search engine. The software started in 2021 as a fork of Elasticsearch and Kibana, with development led by Amazon Web Services.'' == Installation == Install the {{Pkg|opensearch}} package. Various..."</p>
<hr />
<div>[[Category:Database management systems]]<br />
[[ja:OpenSearch]]<br />
From [[Wikipedia:OpenSearch (software)]]:<br />
:'''''OpenSearch''' is a family of software consisting of a search engine (also named OpenSearch), and ''OpenSearch Dashboards'', a data visualization dashboard for that search engine. The software started in 2021 as a fork of Elasticsearch and Kibana, with development led by Amazon Web Services.''<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{Pkg|opensearch}} package.<br />
<br />
Various plugins are listed as optional dependencies which can be installed according to your needs. If you are using {{Pkg|opensearch-dashboards}} remember to install the corresponding Dashboards plugins.<br />
<br />
== Running ==<br />
<br />
If you do not have a keystore at {{ic|/etc/opensearch/opensearch.keystore}}, you need to create one before starting Elasticsearch:<br />
<br />
# opensearch-keystore create<br />
<br />
Afterwards, you can [[start/enable]] {{ic|opensearch.service}}.<br />
<br />
Ensure Elasticsearch is running and accessible by using {{pkg|curl}}, {{ic|curl '<protocol>://<host>:<port>'}}:<br />
{{hc|curl http://127.0.0.1:9200|2=<br />
<nowiki><br />
{<br />
"name" : "opensearch.example.net",<br />
"cluster_name" : "opensearch",<br />
"cluster_uuid" : "TRylpzbsQB-Nk2KgktTQtA",<br />
"version" : {<br />
"number" : "7.10.2",<br />
"build_type" : "tar",<br />
"build_hash" : "unknown",<br />
"build_date" : "2022-01-07T15:57:30.358290Z",<br />
"build_snapshot" : false,<br />
"lucene_version" : "8.10.1",<br />
"minimum_wire_compatibility_version" : "6.8.0",<br />
"minimum_index_compatibility_version" : "6.0.0-beta1"<br />
},<br />
"tagline" : "The OpenSearch Project: https://opensearch.org/"<br />
}<br />
</nowiki><br />
}}<br />
<br />
== Configuration ==<br />
<br />
The main OpenSearch configuration file is well-documented and located at {{ic|/etc/opensearch/opensearch.yml}}. The [https://opensearch.org/docs/latest/opensearch/configuration/ official documentation] should prove helpful as well.<br />
<br />
* By default OpenSearch is public accessible, it may be preferred to allow only access on the host instead:<br />
<br />
network.host: 127.0.0.1<br />
<br />
* It is possible to use a custom port instead of the default {{ic|9200}}:<br />
<br />
http.port: 9200<br />
<br />
== Usage ==<br />
<br />
The OpenSearch server management (document maintenance, performing search, etc.) is usually done by [https://opensearch.org/docs/latest/clients/index/ clients] that should provide a seamless integration with the preferred programming language.<br />
<br />
Useful tools to manage OpenSearch instances and clusters like {{Pkg|opensearch-dashboards}} and {{Pkg|opensearch-cli}} are also available to simplify management.<br />
<br />
== Upgrading from Elasticsearch OSS ==<br />
<br />
To upgrade multi-node clusters of Elasticsearch OSS to OpenSearch one should consult the [https://opensearch.org/docs/latest/upgrade-to/upgrade-to/ official guide].<br />
<br />
For standalone nodes it might suffice to copy any configuration changes and move the index data to its new location:<br />
# systemctl stop elasticsearch<br />
# cp -r /var/lib/elasticsearch/nodes /var/lib/opensearch/<br />
# chown opensearch:opensearch -R /var/lib/opensearch<br />
# systemctl start opensearch<br />
<br />
== Compatibility with Beats OSS ==<br />
<br />
[https://github.com/elastic/beats Beats agents] like filebeat are not compatible with OpenSearch in newer versions, the [https://opensearch.org/docs/latest/clients/agents-and-ingestion-tools/index/ official documentation] provides compatibility tables. Versions {{ic|7.13.X}} and above won't work and all {{ic|7.X}} versions need a workaround in the configuration:<br />
{{hc|/etc/opensearch/opensearch.yml|2=<br />
<nowiki><br />
[...]<br />
compatibility.override_main_response_version: true<br />
[...]<br />
</nowiki><br />
}}<br />
<br />
This will make OpenSearch return {{ic|7.10.2}} as its version number.</div>Hashworkshttps://wiki.archlinux.org/index.php?title=Nextcloud&diff=706053Nextcloud2021-12-16T11:28:33Z<p>Hashworks: Mark Collabora Online Office integration out of date</p>
<hr />
<div>[[Category:File sharing]]<br />
[[Category:Web applications]]<br />
[[ja:Nextcloud]]<br />
[[zh-hans:Nextcloud]]<br />
{{Related articles start}}<br />
{{Related|Apache HTTP Server}}<br />
{{Related|Nginx}}<br />
{{Related|OpenSSL}}<br />
{{Related|WebDAV}}<br />
{{Related articles end}}<br />
<br />
From [[Wikipedia:Nextcloud]]:<br />
<br />
:Nextcloud is a suite of client-server software for creating and using file hosting services. It is functionally similar to Dropbox, although Nextcloud is free and open-source, allowing anyone to install and operate it on a private server. In contrast to proprietary services like Dropbox, the open architecture allows adding additional functionality to the server in form of applications.<br />
<br />
Nextcloud is a fork of ownCloud. For differences between the two, see [[Wikipedia:Nextcloud#Differences from ownCloud]].<br />
<br />
== Prerequisites ==<br />
<br />
Nextcloud requires several components:[https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server]<br />
<br />
* A web server: [[Apache HTTP Server]] or [[nginx]]<br />
* A database: [[MariaDB]]/MySQL, [[PostgreSQL]], [[SQLite]] or [[Oracle Database]]<br />
* [[PHP]] with [[#PHP setup|additional modules]]<br />
<br />
These will be configured in [[#PHP setup]].<br />
<br />
Make sure the required components are installed before proceeding.<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{Pkg|nextcloud}} package.<br />
<br />
== Configuration ==<br />
<br />
The web application is configured in {{ic|/etc/webapps/nextcloud/config/config.php}}.<br />
<br />
{{Note|Nextcloud should store user data in {{ic|/var/lib/nextcloud/data/}}, as that directory is only accessible by root and the application itself. For the installation of apps using the web application {{ic|/var/lib/nextcloud/apps/}} should be used.}}<br />
<br />
=== Data directory ===<br />
<br />
By default nextcloud stores its user data in {{ic|/var/lib/nextcloud/data/}}. This location is configurable:<br />
<br />
{{hc|/etc/webapps/nextcloud/config/config.php|2=<br />
$CONFIG = [<br />
/* [..] */<br />
'datadirectory' => '/var/lib/nextcloud/data',<br />
/* [..] */<br />
]<br />
}}<br />
<br />
{{Note| The {{ic|datadirectory}} needs to be writable by the {{ic|nextcloud}} user.}}<br />
<br />
=== Writable apps directory ===<br />
<br />
The default apps location in {{ic|/usr/share/webapps/nextcloud/apps/}} is not writable to the {{ic|nextcloud}} user, as it is part of the package.<br />
<br />
To be able to install apps from the app store, it is possible to use a separate, writable apps directory. This defaults to {{ic|/var/lib/nextcloud/apps/}} and is accessible via a symlink ({{ic|/usr/share/webapps/nextcloud/wapps}}) in the web application's root directory.<br />
<br />
The directories are configurable:<br />
<br />
{{hc|/etc/webapps/nextcloud/config/config.php|2=<br />
$CONFIG = [<br />
/* [..] */<br />
'apps_paths' => [<br />
[<br />
'path'=> '/usr/share/webapps/nextcloud/apps',<br />
'url' => '/apps',<br />
'writable' => false,<br />
],<br />
[<br />
'path'=> '/var/lib/nextcloud/apps',<br />
'url' => '/wapps',<br />
'writable' => true,<br />
],<br />
],<br />
/* [..] */<br />
]<br />
}}<br />
<br />
{{Note|<br />
* The {{ic|apps_paths}} entry declared as {{ic|writable}} needs to be writable by the {{ic|nextcloud}} user. Additionally a symlink to that directory needs to be created in {{ic|/usr/share/webapps/nextcloud/}}.<br />
* The above syntax uses php's [https://wiki.php.net/rfc/short_list_syntax short array syntax]. The same could be written in the syntax most guides use: <br />
{{hc|/etc/webapps/nextcloud/config/config.php|2=<br />
$CONFIG = (<br />
/* [..] */<br />
'apps_paths' => array (<br />
0 => array (<br />
'path' => '/usr/share/webapps/nextcloud/apps',<br />
'url' => '/apps',<br />
'writable' => false,<br />
),<br />
1 => array (<br />
'path' => '/var/lib/nextcloud/apps',<br />
'url' => '/wapps',<br />
'writable' => true,<br />
),<br />
),<br />
/* [..] */<br />
)<br />
}}<br />
}}<br />
<br />
=== Log directory ===<br />
<br />
By default logs are created in {{ic|/var/log/nextcloud/nextcloud.log}}. This location is configurable:<br />
<br />
{{hc|/etc/webapps/nextcloud/config/config.php|2=<br />
$CONFIG = [<br />
/* [..] */<br />
'logfile' => '/var/log/nextcloud/nextcloud.log',<br />
]<br />
/* [..] */<br />
}}<br />
<br />
=== Database setup ===<br />
<br />
An SQL database must be set up and used for your Nextcloud installation. After setting up the database here,<br />
you will be prompted for its information when you first create an administrator account.<br />
<br />
==== MariaDB ====<br />
<br />
{{Note|Create or convert the database with MySQL 4-byte support in order to use Emojis (textbased smilies) on your Nextcloud server [https://docs.nextcloud.com/server/latest/admin_manual/configuration_database/mysql_4byte_support.html].}}<br />
<br />
If you want to use Emojis, replace the following CREATE DATABASE... with:<br />
{{bc|mysql> CREATE DATABASE '''nextcloud''' DEFAULT CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci';}}<br />
<br />
It is recommended to set up an own database and user when using [[MariaDB]]:<br />
<br />
{{hc|$ mysql -u root -p|2=<br />
mysql> CREATE DATABASE '''nextcloud''' DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci';<br />
mysql> GRANT ALL PRIVILEGES ON '''nextcloud'''.* TO ''''nextcloud''''@'localhost' IDENTIFIED BY ''''password'''';<br />
mysql> FLUSH PRIVILEGES;<br />
mysql> \q<br />
}}<br />
<br />
==== PostgreSQL ====<br />
<br />
The following is an example of setting up a [[PostgreSQL]] user and database:<br />
<br />
{{hc|1=[postgres]$ createuser -h localhost -P nextcloud|2=<br />
Enter password for new role:<br />
Enter it again:<br />
}}<br />
<br />
[postgres]$ createdb -O nextcloud nextcloud<br />
<br />
=== PHP setup ===<br />
<br />
{{Tip|For all prerequisite PHP modules, see [https://docs.nextcloud.com/server/latest/admin_manual/installation/source_installation.html#prerequisites-label upstream documentation].}}<br />
<br />
Make sure that {{ic|session.save_path}} is configured. Install [[PHP#gd]] and {{pkg|php-intl}} as additional modules. Configure [[PHP#OPCache|OPcache]] as recommended by [https://docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html#enable-php-opcache the documentation].<br />
<br />
Some apps (e.g. ''News'') require the {{ic|iconv}} extension. If you wish to use these apps, uncomment the extension in {{ic|/etc/php/php.ini}}.<br />
<br />
Depending on which database backend will be used:<br />
<br />
* For [[MySQL]], see [[PHP#MySQL/MariaDB]].<br />
* For [[PostgreSQL]], see [[PHP#PostgreSQL]].<br />
* For [[SQLite]], see [[PHP#Sqlite]].<br />
<br />
Performance may be improved through the implementation of [[PHP#Caching|caching]], see [https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/caching_configuration.html Configuring Memory Caching] on the official documentation for details.<br />
<br />
=== Nextcloud setup ===<br />
<br />
{{ic|occ}} is a command-line tool that can be used to control Nextcloud. It is located in {{ic|/usr/share/webapps/nextcloud/occ}} and should be run as the {{ic|nextcloud user}}. A wrapper is provided in {{ic|/usr/bin/occ}} which will run the command using [[sudo]].<br />
<br />
To set up Nextcloud, you can use the {{ic|$ occ maintenance:install}} command. See [https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/occ_command.html#command-line-installation-label Nextcloud documentation] for more details. For example, to set up Nextcloud with [[PostgreSQL]]:<br />
<br />
$ occ maintenance:install --database pgsql --database-name nextcloud --database-host localhost --database-user nextcloud --database-pass=<password> --data-dir /var/lib/nextcloud/data/<br />
<br />
Alternatively, [[#Web server setup|set up Nextcloud on a web server]], then navigate to your Nextcloud instance in a web browser to access an installation wizard. Enter your database details and the location of the [[#Data directory|data directory]].<br />
<br />
=== Configure caching ===<br />
<br />
It is recommended to [https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/caching_configuration.html enable caching]. The Nextcloud documentation provides instructions on [[Redis]], Memcached and [[PHP#APCu|APCu]].<br />
<br />
=== Install notify_push ===<br />
<br />
To lower the impact of desktop and web clients on your server (polling for file activity and other notifications), you may want to install the [https://apps.nextcloud.com/apps/notify_push notify_push app]. You can do so via the web interface or with {{AUR|nextcloud-app-notify_push}}. More information can be found on the initial [https://nextcloud.com/blog/nextcloud-faster-than-ever-introducing-files-high-performance-back-end/ blog post].<br />
<br />
== Hosting ==<br />
<br />
{{Note| Nextcloud needs to be run as its own user and group (i.e. {{ic|nextcloud}}). It is using {{ic|/etc/webapps/nextcloud/}}, {{ic|/var/lib/nextcloud/}}, {{ic|/var/log/nextcloud/}} and {{ic|/run/nextcloud/}} for configurations, state data (data and apps from the app store), logs and (potentially) sockets (respectively)!}}<br />
<br />
As stated above, in order to set up Nextcloud, you must set up the appropriate PHP requirements;<br />
additionally, you must configure a database and a webserver.<br />
<br />
=== Web server setup ===<br />
<br />
{{Warning|It is recommended to use HTTPS instead of plain HTTP, see [[Apache HTTP Server#TLS]] or [[Nginx#TLS]] for examples and implement this in the examples given below.}}<br />
<br />
Depending on which [[web server]] you are using, further setup is required, indicated below.<br />
<br />
==== Apache ====<br />
<br />
If you have not already, install [[Apache HTTP Server]] and install and enable [[Apache HTTP Server#PHP|Apache's PHP module]]<br />
<br />
Copy the Apache configuration file to the configuration directory:<br />
<br />
# cp /usr/share/doc/nextcloud/apache.example.conf /etc/httpd/conf/extra/nextcloud.conf<br />
<br />
Modify the file according to your preferences. By default it includes an alias for {{ic|/nextcloud}} pointing to {{ic|/usr/share/webapps/nextcloud}}.<br />
<br />
And include it in {{ic|/etc/httpd/conf/httpd.conf}}:<br />
<br />
Include conf/extra/nextcloud.conf<br />
<br />
Ensure that the root location of your Nextcloud installation (e.g., {{ic|/usr/share/webapps/nextcloud}}) is accessible by the webserver's user {{ic|http}}.<br />
<br />
Now restart Apache ({{ic|httpd.service}}).<br />
<br />
If nextcloud keeps reporting an internal server error depending on your setup it might be needed to allow apache to access your files using nextcloud user permission. Install {{Pkg|mod_itk}} and add this to your vhost setup: <br />
{{hc|/etc/httpd/conf/extra/nextcloud.conf|output=<nowiki><br />
<IfModule mpm_itk_module><br />
AssignUserId nextcloud nextcloud<br />
</IfModule><br />
</nowiki>}}<br />
{{hc|/etc/httpd/conf/httpd.conf|output=<nowiki><br />
LoadModule mpm_itk_module modules/mpm_itk.so<br />
</nowiki>}}<br />
<br />
{{Note|<br />
Be aware however that {{ic|mpm_itk}} is [http://mpm-itk.sesse.net/ not compatible with threading], so the Apache server cannot use {{ic|mpm_event_module}} nor {{ic|mpm_worker_module}}. You will get an error message such as `mpm-itk cannot use threaded MPMs; please use prefork`. For a discussion of pros and cons of these see [https://serverfault.com/questions/383526/how-do-i-select-which-apache-mpm-to-use this Serverfault question] (mpm_itk is derived from mpm_prefork). {{ic|mod_php}} is not compatible with threaded mpm's either, so unless you are using php-fpm you probably are already "stuck" on {{ic|mpm_prefork_module}}. However, note also that the {{ic|http2_module}} is not compatible with {{ic|mpm_prefork_module}} and hence with {{ic|mpm_itk}}…<br />
}}<br />
<br />
===== WebDAV =====<br />
<br />
Nextcloud comes with its own [[WebDAV]] implementation enabled, which may conflict with the one shipped with Apache. If you have enabled WebDAV in Apache (not enabled by default), disable the modules {{ic|mod_dav}} and {{ic|mod_dav_fs}} in {{ic|/etc/httpd/conf/httpd.conf}}. See [https://forum.owncloud.org/viewtopic.php?f=17&t=7240] for details.<br />
<br />
===== With php-fpm =====<br />
<br />
Set up [[#php-fpm]] if you want to use it as a FastCGI handler with Apache. Then set it as the request handler for PHP files:<br />
<br />
{{hc|/etc/httpd/conf/extra/php-fpm.conf|output=<nowiki><br />
DirectoryIndex index.php index.html<br />
<FilesMatch \.php$><br />
SetHandler "proxy:unix:/run/nextcloud/nextcloud.sock|fcgi://localhost/"<br />
</FilesMatch><br />
</nowiki><br />
}}<br />
<br />
Place {{ic|<FilesMatch>}} section directly in {{ic|<VirtualHost>}} if you use virtual hosts.<br />
<br />
==== php-fpm ====<br />
<br />
{{Pkg|php-fpm}} is PHP's FastCGI implementation. It can be used by web servers that support the protocol.<br />
<br />
Add an additional pool that runs as the {{ic|nextcloud}} user/group:<br />
<br />
{{hc|/etc/php/php-fpm.d/nextcloud.conf|2=<br />
[nextcloud]<br />
user = nextcloud<br />
group = nextcloud<br />
listen = /run/nextcloud/nextcloud.sock<br />
env[PATH] = /usr/local/bin:/usr/bin:/bin<br />
env[TMP] = /tmp<br />
<br />
; should be accessible by your web server<br />
listen.owner = http<br />
listen.group = http<br />
<br />
pm = dynamic<br />
pm.max_children = 15<br />
pm.start_servers = 2<br />
pm.min_spare_servers = 1<br />
pm.max_spare_servers = 3<br />
}}<br />
<br />
The php-fpm service runs with the system mounted as read-only for hardening purposes, so it is necessary to explicitly grant write permissions on the appropriate Nextcloud paths. [[Edit]] {{ic|php-fpm.service}} to create a drop-in file and save it with the following contents:<br />
<br />
{{hc|/etc/systemd/system/php-fpm.service.d/override.conf|2=<br />
[Service]<br />
# Your data directory<br />
ReadWritePaths=/var/lib/nextcloud/data<br />
<br />
# Optional: add if you've set the default apps directory to be writable in config.php<br />
ReadWritePaths=/usr/share/webapps/nextcloud/apps<br />
<br />
# Optional: unnecessary if you've set 'config_is_read_only' => true in your config.php<br />
ReadWritePaths=/usr/share/webapps/nextcloud/config<br />
ReadWritePaths=/etc/webapps/nextcloud/config<br />
<br />
# Optional: add if you want to use Nextcloud's internal update process<br />
# ReadWritePaths=/usr/share/webapps/nextcloud<br />
}}<br />
<br />
[[Enable]] and [[start]] the {{ic|php-fpm}} service.<br />
<br />
==== Nginx ====<br />
<br />
Make sure [[#php-fpm]] has been configured correctly.<br />
<br />
Create a [[Nginx#Server_blocks|server block]] and add the content according to the [https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html Nextcloud documentation].<br />
<br />
Use {{ic|unix:/run/nextcloud/nextcloud.sock}} as {{ic|server}} in the {{ic|upstream php-handler}} block and {{ic|/usr/share/webapps/nextcloud}} as {{ic|root}} location:<br />
{{hc|/etc/nginx/sites-enabled/nextcloud|2=<br />
upstream php-handler {<br />
server unix:/run/nextcloud/nextcloud.sock;<br />
}<br />
<br />
# ...<br />
<br />
server {<br />
listen 443 ssl http2;<br />
listen [::]:443 ssl http2;<br />
# ...<br />
root /usr/share/webapps/nextcloud;<br />
# ...<br />
}<br />
}}<br />
<br />
See [[nginx#FastCGI]] for more information on using FastCGI with nginx.<br />
<br />
==== lighttpd ====<br />
<br />
Enable [[lighttpd#FastCGI]], e.g. by adding {{ic|code=server.modules += ( "mod_fastcgi" )}} to {{ic|/etc/lighttpd/lighttpd.conf}}.<br />
<br />
Create a link to {{ic|/usr/share/webapps/nextcloud}} in your {{ic|/srv/http/}} directory (or configured root).<br />
<br />
== Security Hardening ==<br />
<br />
See the [https://docs.nextcloud.com/server/latest/admin_manual/installation/harden_server.html Nextcloud documentation] and [[Security]]. Nextcloud additionally provides a [https://scan.nextcloud.com/ Security scanner].<br />
<br />
=== uWSGI ===<br />
<br />
You can run Nextcloud in its own process and service by using the [[uWSGI]] application server with {{pkg|uwsgi-plugin-php}}. This allows you to define a [[PHP#Configuration|PHP configuration]] only for this instance of PHP, without the need to edit the global {{ic|php.ini}} and thus keeping your web application configurations compartmentalized. ''uWSGI'' itself has a wealth of features to limit the resource use and to harden the security of the application, and by being a separate process it can run under its own user.<br />
<br />
The only part that differs from [[#Nginx]] is the {{ic|<nowiki>location ~ \.php(?:$|/) {}</nowiki>}} block:<br />
<br />
{{bc|<nowiki><br />
location ~ \.php(?:$|/) {<br />
include uwsgi_params;<br />
uwsgi_modifier1 14;<br />
# Avoid duplicate headers confusing OC checks<br />
uwsgi_hide_header X-Frame-Options;<br />
uwsgi_hide_header X-XSS-Protection;<br />
uwsgi_hide_header X-Content-Type-Options;<br />
uwsgi_hide_header X-Robots-Tag;<br />
uwsgi_pass unix:/run/uwsgi/nextcloud.sock;<br />
}<br />
</nowiki>}}<br />
<br />
Then create a config file for ''uWSGI'':<br />
<br />
{{hc|/etc/uwsgi/nextcloud.ini|<nowiki><br />
[uwsgi]<br />
; load the required plugins<br />
plugins = php<br />
; force the sapi name to 'apache', this will enable the opcode cache <br />
php-sapi-name = apache<br />
<br />
; set master process name and socket<br />
; '%n' refers to the name of this configuration file without extension<br />
procname-master = uwsgi %n<br />
master = true<br />
socket = /run/uwsgi/%n.sock<br />
<br />
; drop privileges<br />
uid = nextcloud<br />
gid = nextcloud<br />
umask = 022<br />
<br />
; run with at least 1 process but increase up to 4 when needed<br />
processes = 4<br />
cheaper = 1<br />
<br />
; reload whenever this config file changes<br />
; %p is the full path of the current config file<br />
touch-reload = %p<br />
<br />
; disable uWSGI request logging<br />
;disable-logging = true<br />
<br />
; enforce a DOCUMENT_ROOT<br />
php-docroot = /usr/share/webapps/%n<br />
; limit allowed extensions<br />
php-allowed-ext = .php<br />
; and search for index.php if required<br />
php-index = index.php<br />
<br />
; set php configuration for this instance of php, no need to edit global php.ini<br />
php-set = date.timezone=Etc/UTC<br />
;php-set = open_basedir=/tmp/:/usr/share/webapps/nextcloud:/etc/webapps/nextcloud:/dev/urandom<br />
php-set = expose_php=false<br />
; avoid security risk of leaving sessions in world-readable /tmp<br />
php-set = session.save_path=/var/lib/nextcloud/data<br />
<br />
; port of php directives set upstream in /usr/share/webapps/nextcloud/.user.ini for use with PHP-FPM<br />
php-set = upload_max_filesize=513M<br />
php-set = post_max_size=513M<br />
php-set = memory_limit=512M<br />
php-set = output_buffering=off<br />
<br />
; load all extensions only in this instance of php, no need to edit global php.ini<br />
;; required core modules<br />
php-set = extension=gd<br />
php-set = extension=iconv<br />
;php-set = extension=zip # enabled by default in global php.ini<br />
<br />
;; database connectors<br />
;; uncomment your selected driver<br />
;php-set = extension=pdo_sqlite<br />
;php-set = extension=pdo_mysql<br />
;php-set = extension=pdo_pgsql<br />
<br />
;; recommended extensions<br />
;php-set = extension=curl # enabled by default in global php.ini<br />
php-set = extension=bz2<br />
php-set = extension=intl<br />
<br />
;; required for specific apps<br />
;php-set = extension=ldap # for LDAP integration<br />
;php-set = extension=ftp # for FTP storage / external user authentication<br />
;php-set = extension=imap # for external user authentication, requires php-imap<br />
<br />
;; recommended for specific apps<br />
;php-set = extension=exif # for image rotation in pictures app, requires exiv2<br />
;php-set = extension=gmp # for SFTP storage<br />
<br />
;; for preview generation<br />
;; provided by packages in AUR<br />
; php-set = extension=imagick<br />
<br />
; opcache<br />
php-set = zend_extension=opcache<br />
<br />
; user cache<br />
; provided by php-acpu, to be enabled **either** here **or** in /etc/php/conf.d/apcu.ini<br />
php-set = extension=apcu<br />
; per https://github.com/krakjoe/apcu/blob/simplify/INSTALL<br />
php-set = apc.ttl=7200<br />
php-set = apc.enable_cli=1<br />
<br />
; web server is already handling URL rewriting, so tell NextCloud not to repeat this<br />
env = front_controller_active=true<br />
<br />
cron2 = minute=-15,unique=1 /usr/bin/php -f /usr/share/webapps/nextcloud/cron.php 1>/dev/null<br />
</nowiki>}}<br />
<br />
{{Note|1=<nowiki/><br />
* Do not forget to set your timezone and uncomment the required database connector in the uWSGI config file<br />
* The [[PHP#Configuration|open_basedir]] directive is optional and commented out. You can uncomment to harden security. Be aware that it may [https://github.com/owncloud/core/search?q=open_basedir&type=Issues occasionally break things].<br />
* Use {{ic|1=php-docroot = /usr/share/webapps}} if placing nextcloud in /nextcloud subdirectory.<br />
}}<br />
<br />
{{Warning|The way the [https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/background_jobs_configuration.html Nextcloud background job] is currently set up with [https://uwsgi-docs.readthedocs.org/en/latest/Cron.html uWSGI cron] will make use of the default global configuration from {{ic|/etc/php/php.ini}}. This means that none of the specific parameters defined (e.g. required modules) will be enabled, [https://github.com/owncloud/core/issues/12678#issuecomment-66114448 leading to various issues]. One solution is to copy {{ic|/etc/php/php.ini}} to e.g. {{ic|/etc/uwsgi/cron-php.ini}}, make the required modifications there (mirroring {{ic|/etc/uwsgi/nextcloud.ini}} parameters) and referencing it in the cron directive by adding the {{ic|-c /etc/uwsgi/cron-php.ini}} option to ''php'' invocation.}}<br />
<br />
==== Activation ====<br />
<br />
[[uWSGI]] provides a [[Systemd#Using_units|template unit]] that allows to start and enable application using their configuration file name as instance identifier. For example, [[start]]ing {{ic|uwsgi@nextcloud.socket}} would start it on demand referencing the configuration file {{ic|/etc/uwsgi/nextcloud.ini}}. <br />
<br />
To enable the uwsgi service by default at start-up, [[enable]] {{ic|uwsgi@nextcloud.socket}}.<br />
<br />
{{Note|Here we make use of [http://0pointer.de/blog/projects/socket-activation.html systemd socket activation] to prevent unnecessary resources consumption when no connections are made to the instance. If you would rather have it constantly active, simply remove the {{ic|.socket}} part to start and enable the service instead.}}<br />
<br />
See also [[UWSGI#Running uWSGI]].<br />
<br />
== Synchronization ==<br />
<br />
=== Desktop ===<br />
<br />
The official client can be installed with the {{Pkg|nextcloud-client}} package.<br />
Alternative versions are available in the [[AUR]]: {{AUR|nextcloud-client-git}}. Please keep in mind that it is not supported to use the {{Pkg|owncloud-client}} with Nextcloud. Additional packages are needed for some features:<br />
<br />
* '''Auto-login:''' All of them use {{Pkg|qtkeychain-qt5}} to store and retrieve account-specific access tokens. To achieve auto-login when the client starts, one of optional dependencies of ''qtkeychain'' should be installed as well. Moreover, if you choose {{Pkg|libsecret}} as the backend for ''qtkeychain'', a service that provides [https://archlinux.org/packages/?q=org.freedesktop.secrets org.freedesktop.secrets] should be running when the client starts.<br />
* '''File manager integration:''' for {{Pkg|nextcloud-client}}, integration with file managers (e.g., show Nextcloud folders in GTK+ file dialogs) requires another package {{Pkg|nextcloud-client-cloudproviders}}. {{Pkg|nextcloud-client}} already includes cloudproviders supports by default.<br />
<br />
=== Thunderbird ===<br />
<br />
==== Calendar ====<br />
<br />
To access your Nextcloud calendars using Mozilla [[Thunderbird]]'s Lightning calendar you would use the following URL:<br />
<br />
<nowiki>https://ADDRESS/remote.php/caldav/calendars/USERNAME/CALENDARNAME</nowiki><br />
<br />
To access your Nextcloud calendars using CalDAV-compatible programs like Kontact or [[Evolution]], you would use the following URL:<br />
<br />
<nowiki>https://ADDRESS/remote.php/caldav</nowiki><br />
<br />
For details see the [https://docs.nextcloud.com/server/latest/user_manual/en/pim/index.html official documentation].<br />
<br />
==== Contacts ====<br />
<br />
To sync contacts with [[Thunderbird]], follow [https://docs.nextcloud.com/server/latest/user_manual/en/pim/sync_thunderbird.html the official documentation].<br />
<br />
=== Mounting files with davfs2 ===<br />
<br />
If you want to mount your Nextcloud using WebDAV, install {{Pkg|davfs2}} (as described in [[davfs2]]).<br />
<br />
To mount your Nextcloud, use:<br />
<br />
# mount -t davfs https://''your_domain''/nextcloud/remote.php/dav/files/''username''/ /path/to/mount<br />
<br />
You can also create an entry for this in {{ic|/etc/fstab}}<br />
<br />
{{hc|/etc/fstab|<br />
https://''your_domain''/nextcloud/remote.php/dav/files/''username''/ /path/to/mount davfs rw,user,noauto 0 0<br />
}}<br />
<br />
{{Tip|In order to allow automount you can also store your username (and password if you like) in a file as described in [[davfs2#Storing credentials]].}}<br />
<br />
{{Note|If creating/copying files is not possible, while the same operations work on directories, see [[davfs2#Creating/copying files not possible and/or freezes]].}}<br />
<br />
=== Mounting files in GNOME Files (Nautilus) ===<br />
<br />
You can access the files directly in Nautilus ('+ Other Locations') through WebDAV protocol - use the link as shown in your Nextcloud installation Web GUI (typically: <nowiki>https://example.org/remote.php/webdav/</nowiki>) but replace the protocol name from 'https' to 'davs'. Nautilus will ask for user name and password when trying to connect.<br />
<br />
=== Android ===<br />
<br />
Download the official Nextcloud app from [https://play.google.com/store/apps/details?id=com.nextcloud.client Google Play] or [https://f-droid.org/packages/com.nextcloud.client/ F-Droid].<br />
<br />
To enable contacts and calendar sync (Android 4+):<br />
# download [https://www.davx5.com/ DAVx<sup>5</sup>] ([https://play.google.com/store/apps/details?id=at.bitfire.davdroid Play Store], [https://f-droid.org/app/at.bitfire.davdroid F-Droid])<br />
# Enable mod_rewrite.so in httpd.conf<br />
# create a new DAVdroid account in the ''Account'' settings, and specify your "short" server address and login/password couple, e.g. {{ic|<nowiki>https://cloud.example.com</nowiki>}} (there is no need for the {{ic|<nowiki>/remote.php/{carddav,webdav}</nowiki>}} part if you configured your web server with the proper redirections, as illustrated previously in the article; ''DAVdroid'' will find itself the right URLs)<br />
<br />
=== iOS ===<br />
<br />
Download the official Nextcloud app from the [https://itunes.apple.com/us/app/nextcloud/id1125420102 App Store].<br />
<br />
== Tips and tricks ==<br />
<br />
=== Using the ownCloud console ===<br />
<br />
A useful tool for server administration is {{ic|occ}}, documented [https://docs.nextcloud.com/server/20/admin_manual/configuration_server/occ_command.html here]. You can perform many common server operations with occ, such as managing users and configuring apps.<br />
<br />
{{Tip| A convenience wrapper around {{ic|/usr/share/webapps/nextcloud/occ}} is provided with {{ic|/usr/bin/occ}}, which automatically runs as the default user ({{ic|nextcloud}}), using the default [[PHP]] and PHP configuration file.<br />
The environment variables {{ic|NEXTCLOUD_USER}}, {{ic|NEXTCLOUD_PHP}} and {{ic|NEXTCLOUD_PHP_CONFIG}} can be used to specify a non-default user, PHP executable and PHP configuration file (respectively).}}<br />
<br />
{{Warning| When using {{pkg|php-apcu}} for caching, make sure to set {{ic|1= apc.enable_cli=1}} in {{ic|/etc/php/conf.d/apcu.ini}}, as the {{ic|occ}} command will otherwise run out of memory ({{Bug|69726}}).}}<br />
<br />
=== Pacman hook ===<br />
<br />
To automatically upgrade the Nextcloud database on package update, you can make use of the included [[pacman hook]]:<br />
<br />
# mkdir -vp /etc/pacman.d/hooks<br />
# ln -sv /usr/share/doc/nextcloud/nextcloud.hook /etc/pacman.d/hooks/<br />
<br />
{{Note| The packaged pacman hook implies, that the global {{ic|php.ini}} is used for the application.}}<br />
<br />
=== Running Nextcloud in a subdirectory ===<br />
<br />
By including the default {{ic|nextcloud.conf}} in {{ic|httpd.conf}}, Nextcloud will take control of port 80 and your localhost domain. <br />
<br />
If you would like to have Nextcloud run in a subdirectory, then <br />
<br />
For apache, edit the {{ic|/etc/httpd/conf/extra/nextcloud.conf}} you included and comment out the {{ic|<nowiki><VirtualHost *:80> ... </VirtualHost></nowiki>}} part of the include file.<br />
<br />
For nginx, you can use the following config when using Nextcloud with uwsgi:<br />
<br />
{{hc|head=/etc/nginx/conf.d/nextcloud.conf|output=<nowiki><br />
location = /.well-known/carddav {<br />
return 301 $scheme://$host/nextcloud/remote.php/dav;<br />
}<br />
<br />
location = /.well-known/caldav {<br />
return 301 $scheme://$host/nextcloud/remote.php/dav;<br />
}<br />
<br />
location /.well-known/acme-challenge { }<br />
<br />
location ^~ /nextcloud {<br />
<br />
root /usr/share/webapps;<br />
<br />
# set max upload size<br />
client_max_body_size 512M;<br />
fastcgi_buffers 64 4K;<br />
<br />
# Disable gzip to avoid the removal of the ETag header<br />
gzip off;<br />
<br />
# Uncomment if your server is build with the ngx_pagespeed module<br />
# This module is currently not supported.<br />
#pagespeed off;<br />
<br />
location /nextcloud {<br />
rewrite ^ /nextcloud/index.php$uri;<br />
}<br />
<br />
location ~ ^/nextcloud/(?:build|tests|config|lib|3rdparty|templates|data)/ {<br />
deny all;<br />
}<br />
<br />
location ~ ^/nextcloud/(?:\.|autotest|occ|issue|indie|db_|console) {<br />
deny all;<br />
}<br />
<br />
location ~ ^/nextcloud/(?:updater|ocs-provider)(?:$|/) {<br />
try_files $uri/ =404;<br />
index index.php;<br />
}<br />
<br />
location ~ ^/nextcloud/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {<br />
include uwsgi_params;<br />
uwsgi_modifier1 14;<br />
# Avoid duplicate headers confusing OC checks<br />
uwsgi_hide_header X-Frame-Options;<br />
uwsgi_hide_header X-XSS-Protection;<br />
uwsgi_hide_header X-Content-Type-Options;<br />
uwsgi_hide_header X-Robots-Tag;<br />
uwsgi_pass unix:/run/uwsgi/owncloud.sock;<br />
}<br />
<br />
# Adding the cache control header for js and css files<br />
# Make sure it is BELOW the PHP block<br />
location ~* \.(?:css|js) {<br />
try_files $uri /nextcloud/index.php$uri$is_args$args;<br />
add_header Cache-Control "public, max-age=7200";<br />
# Add headers to serve security related headers (It is intended<br />
# to have those duplicated to the ones above)<br />
# Before enabling Strict-Transport-Security headers please read<br />
# into this topic first.<br />
# add_header Strict-Transport-Security "max-age=15768000;<br />
# includeSubDomains; preload;";<br />
add_header X-Content-Type-Options nosniff;<br />
add_header X-Frame-Options "SAMEORIGIN";<br />
add_header X-XSS-Protection "1; mode=block";<br />
add_header X-Robots-Tag none;<br />
add_header X-Download-Options noopen;<br />
add_header X-Permitted-Cross-Domain-Policies none;<br />
# Optional: Do not log access to assets<br />
access_log off;<br />
}<br />
<br />
location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg) {<br />
try_files $uri /nextcloud/index.php$uri$is_args$args;<br />
# Optional: Do not log access to other assets<br />
access_log off;<br />
}<br />
}<br />
</nowiki>}}<br />
<br />
{{Note| Do not forget to configure the {{ic |.well-known}} URLs for service discovery. For more information please see [https://docs.nextcloud.com/server/18/admin_manual/issues/general_troubleshooting.html#service-discovery General troubleshooting and service discovery section of Nextcloud documentation]. }}<br />
<br />
=== Docker ===<br />
<br />
See the [https://hub.docker.com/_/owncloud/ ownCloud] or [https://github.com/nextcloud/docker Nextcloud] repository for [[Docker]].<br />
<br />
=== Upload and share from File Manager ===<br />
<br />
[https://github.com/schiesbn/shareLinkCreator shareLinkCreator] provides the ability to upload a file to<br />
OwnCloud via a supported file manager and receive a link to the uploaded file which can then be emailed or shared in another way.<br />
<br />
=== Defining background jobs ===<br />
<br />
Nextcloud requires scheduled execution of some tasks, and by default it achieves this by using AJAX, however AJAX is the least reliable method, and it is recommended to use [[Cron]] instead. However, Arch Linux ships with {{Pkg|systemd}}, so the preferred way of executing scheduled tasks is a [[systemd timer]].<br />
<br />
[[Start/enable]] {{ic|nextcloud-cron.timer}}.<br />
<br />
Confirm that it is running by running {{ic|systemctl list-timers}}.<br />
<br />
==== AUR package ====<br />
<br />
{{Expansion|Describe what the package actually provides.}}<br />
<br />
Install {{AUR|nextcloud-systemd-timers}}.<br />
<br />
Provided services can be checked with:<br />
$ pacman -Ql nextcloud-systemd-timers<br />
<br />
=== Collabora Online Office integration ===<br />
<br />
{{Out of date|The current vhost examples are outdated and won't work with the current version. Please refer to the [[https://sdk.collaboraonline.com/docs/installation/Proxy_settings.html?highlight=nginx#reverse-proxy-with-nginx-webserver offical docs]].|section=Collabora section is outdated and should propably link to official documentation}}<br />
<br />
{{Expansion|What is the correct {{ic|domain}} (or {{ic|server_name}} in the config) when [[#Running Nextcloud in a subdirectory|Nextcloud runs in a subdirectory]]?}}<br />
<br />
==== Solution with Docker ====<br />
<br />
The first, install a {{Pkg|docker}} package to provide collabora files and setup a Collabora server.<br />
<br />
[[Start/enable]] {{ic|docker.service}}.<br />
<br />
Then, download the official Docker image:<br />
<br />
# docker pull collabora/code<br />
<br />
And, installing a Collabora server. Make sure {{ic|cloud//.example//.com}} is your nextcloud's domain, not a collabora :<br />
<br />
# docker run -t -d -p 127.0.0.1:9980:9980 -e "domain=cloud\\.example\\.com" --restart always --cap-add MKNOD collabora/code<br />
<br />
Also make sure to escape all dots with double backslashes (\), since this string will be evaluated as a regular expression (and your bash 'eats' the first backslash.) If you want to use the docker container with more than one Nextcloud, you will need to use 'domain=cloud\\.example\\.com\|second\\.example\\.com' instead. (All hosts are separated by \|.) When using `localhost` as domain for testing you need to add {{ic|--net host}} to ensure the docker container can access your Nextcloud server. <br />
<br />
If you need to delete or reinstall Collabora server use:<br />
<br />
For recognition CONTAINER_ID of server<br />
<br />
# docker ps<br />
<br />
Stop and delete<br />
<br />
# docker stop CONTAINER_ID<br />
# docker rm CONTAINER_ID<br />
<br />
Futher, follow the instruction of webserver you are using:<br />
<br />
'''Nginx setup example:'''<br />
<br />
Add following to your nextcloud domain config or add new config file in /etc/nginx/conf.d/ directory, (Do not forget to change {{ic|office.example.com}} and {{ic|ssl_certificate}} to the right values. If you are using docker image, change {{ic|http}} to {{ic|https}}.)<br />
<br />
{{hc|/etc/nginx/conf.d/example.conf|<nowiki><br />
upstream office.example.com {<br />
server 127.0.0.1:9980;<br />
}<br />
<br />
server {<br />
listen 443 ssl;<br />
server_name office.example.com;<br />
<br />
ssl_certificate /etc/letsencrypt/live/office.example.com/fullchain.pem;<br />
ssl_certificate_key /etc/letsencrypt/live/office.example.com/privkey.pem;<br />
<br />
# static files<br />
location ^~ /loleaflet {<br />
proxy_pass http://127.0.0.1:9980;<br />
proxy_set_header Host $host;<br />
}<br />
<br />
# WOPI discovery URL<br />
location ^~ /hosting/discovery {<br />
proxy_pass http://127.0.0.1:9980;<br />
proxy_set_header Host $host;<br />
}<br />
<br />
# Main websocket<br />
location ~ /lool/(.*)/ws$ {<br />
proxy_pass http://127.0.0.1:9980;<br />
proxy_set_header Upgrade $http_upgrade;<br />
proxy_set_header Connection "Upgrade";<br />
proxy_set_header Host $host;<br />
proxy_read_timeout 36000s;<br />
}<br />
<br />
# Admin Console websocket<br />
location ^~ /lool/adminws {<br />
proxy_buffering off;<br />
proxy_pass http://127.0.0.1:9980;<br />
proxy_set_header Upgrade $http_upgrade;<br />
proxy_set_header Connection "Upgrade";<br />
proxy_set_header Host $host;<br />
proxy_read_timeout 36000s;<br />
}<br />
<br />
# download, presentation and image upload<br />
location ~ /lool {<br />
proxy_pass http://127.0.0.1:9980;<br />
proxy_set_header Host $host;<br />
}<br />
<br />
location ^~ /hosting/capabilities {<br />
proxy_pass http://localhost:9980;<br />
proxy_set_header Host $http_host;<br />
}<br />
<br />
}<br />
</nowiki>}}<br />
<br />
Restart a nginx:<br />
<br />
# nginx -s reload<br />
<br />
or [[restart]] {{ic|nginx.service}}.<br />
<br />
'''Apache setup example:'''<br />
<br />
Add following to nextcloud config file. Do not forget to change to the right values<br />
<br />
{{hc|/etc/httpd/conf/extra/nextcloud.conf|<nowiki><br />
<VirtualHost *:443><br />
ServerName office.nextcloud.com:443<br />
<br />
# SSL configuration, you may want to take the easy route instead and use Lets Encrypt!<br />
SSLEngine on<br />
SSLCertificateFile /path/to/signed_certificate<br />
SSLCertificateChainFile /path/to/intermediate_certificate<br />
SSLCertificateKeyFile /path/to/private/key<br />
SSLProtocol all -SSLv2 -SSLv3<br />
SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS<br />
SSLHonorCipherOrder on<br />
<br />
# Encoded slashes need to be allowed<br />
AllowEncodedSlashes NoDecode<br />
<br />
# Container uses a unique non-signed certificate<br />
SSLProxyEngine On<br />
SSLProxyVerify None<br />
SSLProxyCheckPeerCN Off<br />
SSLProxyCheckPeerName Off<br />
<br />
# keep the host<br />
ProxyPreserveHost On<br />
<br />
# static html, js, images, etc. served from loolwsd<br />
# loleaflet is the client part of LibreOffice Online<br />
ProxyPass /loleaflet https://127.0.0.1:9980/loleaflet retry=0<br />
ProxyPassReverse /loleaflet https://127.0.0.1:9980/loleaflet<br />
<br />
# WOPI discovery URL<br />
ProxyPass /hosting/discovery https://127.0.0.1:9980/hosting/discovery retry=0<br />
ProxyPassReverse /hosting/discovery https://127.0.0.1:9980/hosting/discovery<br />
<br />
# Main websocket<br />
ProxyPassMatch "/lool/(.*)/ws$" wss://127.0.0.1:9980/lool/$1/ws nocanon<br />
<br />
# Admin Console websocket<br />
ProxyPass /lool/adminws wss://127.0.0.1:9980/lool/adminws<br />
<br />
# Download as, Fullscreen presentation and Image upload operations<br />
ProxyPass /lool https://127.0.0.1:9980/lool<br />
ProxyPassReverse /lool https://127.0.0.1:9980/lool<br />
</VirtualHost><br />
</nowiki>}}<br />
<br />
After configuring these do restart your apache by [[restart]]ing {{ic|httpd.service}}.<br />
<br />
'''Install the Nextcloud app'''<br />
<br />
Go to the Apps section and choose “Office & Text”, install the “Collabora Online” app. In admin panel select Collabora Online tab and specific the server's domain you have setup before.<br />
<br />
==== Solution without Docker ====<br />
<br />
The {{AUR|collabora-online-server-nodocker}} package provides the Collabora Office (the desktop suite) and the “CODE” (Collabora Online Development Edition) server, which is based on “lool” (LibreOffice OnLine).<br />
<br />
Alter the {{ic|/etc/coolwsd/coolwsd.xml}} file, so that:<br />
<br />
* {{ic|config > server_name}} contains the host and port of the public Nextcloud address, separated by a colon (e.g. {{ic|example.org:443}}),<br />
* {{ic|config > ssl > enable}} is false (i.e. web browser —HTTPS→ proxy —HTTP→ coolwsd),<br />
* {{ic|config > ssl > termination}} is true (I suppose you’ll manage TLS at the proxy level),<br />
* {{ic|config > storage > wopi > host}} reflects the actual hostname (or pattern) of the proxy server (e.g. {{ic|(?:.*\.)?example\.org}}),<br />
* {{ic|config > admin_console > username}} and {{ic|config > admin_console > password}} are set to values of your choice.<br />
<br />
Then:<br />
<br />
* [[start]] and [[enable]] {{ic|coolwsd.service}};<br />
* configure Nginx by creating a [[Nginx#Server_blocks|server block]] including {{ic|/etc/nginx/snippets/coolwsd.conf}}, and restart it. Example with SSL (change {{ic|office.example.com}} and {{ic|ssl_certificate}} to the right values):<br />
<br />
{{hc|/etc/nginx/conf.d/example.conf|<nowiki><br />
server {<br />
listen 443 ssl;<br />
server_name office.example.com;<br />
<br />
ssl_certificate /etc/letsencrypt/live/office.example.com/fullchain.pem;<br />
ssl_certificate_key /etc/letsencrypt/live/office.example.com/privkey.pem;<br />
<br />
include snippets/coolwsd.conf;<br />
}<br />
</nowiki>}}<br />
<br />
* in Nextcloud, install the "Collabora Online" app. In the admin panel select the Collabora Online tab and specify the server domain name you have just set up.<br />
<br />
=== Disabling app recommendations ===<br />
<br />
By default, nextcloud reccomends apps to new clients, which can result in a lot of notifications. To disable this, disable the recommendation app using {{ic|occ}}.<br />
<br />
=== Backup calendars and address books with calcardbackup ===<br />
<br />
The {{AUR|calcardbackup}} package can be installed and configured to provide regular backups of the calendar and/or address book databases. Edit {{ic|/etc/calcardbackup/calcardbackup.conf}} to your liking and then [[start]] and [[enable]] {{ic|calcardbackup.timer}}.<br />
<br />
== Troubleshooting ==<br />
<br />
{{Out of date|A lot of references to OwnCloud, are these still valid with Nextcloud?}}<br />
<br />
By default, the logs of the web application are available in {{ic|/var/log/nextcloud/nextcloud.log}}.<br />
<br />
=== Issues with permissions and setup after upgrade to >= 21.0.0 ===<br />
<br />
{{Note| Before nextcloud 21.0.0, the web application was run using the {{ic|http}} user. This is a security concern in regards to cross-application access of this user (it has access to all data of all web applications).}}<br />
<br />
Since version 21.0.0 nextcloud more closely follows the [[web application package guidelines]]. This introduces the separate user {{ic|nextcloud}}, as which the web application is run.<br />
<br />
After an upgrade from nextcloud < 21.0.0 make sure that<br />
<br />
* neither the [[#Data directory|data directory]] nor the [[#Writable apps directory|writable apps directory]] is located below {{ic|/usr/share/webapps/nextcloud/}}, as that directory is owned by {{ic|root}}<br />
* both the [[#Data directory|data directory]] and the [[#Writable apps directory|writable apps directory]], alongside all files beneath them are writable and owned by the {{ic|nextcloud}} user<br />
* the web application configuration file resides in {{ic|/etc/webapps/nextcloud/config/}} and that that directory and its contents are writable and owned by the {{ic|nextcloud}} user<br />
* an application server, such as {{pkg|php-fpm}} or [[UWSGI]] is configured to run the web application as the {{ic|nextcloud}} user and not the {{ic|http}} user<br />
* update the cron job/systemd timer to run with the new user<br />
<br />
=== Issues with MariaDB >= 10.6 ===<br />
<br />
Nextcloud is not compatible with [[MariaDB]] version 10.6 or higher (see {{Bug|71549}}). This is due to MariaDB [https://mariadb.com/kb/en/innodb-compressed-row-format/#read-only forcing read-only for compressed InnoDB tables] and Nextcloud using these kind of tables:<br />
<br />
:From MariaDB 10.6.0, tables that are of the {{ic|COMPRESSED}} row format are read-only by default. This is the first step towards removing write support and deprecating the feature.<br />
<br />
Upstream is aware of this [https://github.com/nextcloud/server/issues/25436 problem] but a [https://github.com/nextcloud/server/issues/25436#issuecomment-883213001 quick fix seems unlikely].<br />
<br />
One easy remedy for this issue is to allow write access to compressed InnoDB tables again by means of MariaDB's system variable [https://mariadb.com/docs/reference/mdb/system-variables/innodb_read_only_compressed/ innodb_read_only_compressed]. Just add the following section to your configuration of MariaDB:<br />
<br />
{{hc|/etc/my.cnf.d/server.cnf|2=<br />
[mariadb-10.6]<br />
innodb_read_only_compressed=OFF<br />
}}<br />
<br />
=== Environment variables not available ===<br />
<br />
Uncomment the line in {{ic|/etc/php/php-fpm.d/www.conf}} as per [https://docs.nextcloud.com/server/latest/admin_manual/installation/source_installation.html#php-fpm-tips-label Nextcloud documentation]:<br />
<br />
env[PATH] = /usr/local/bin:/usr/bin:/bin<br />
<br />
=== Self-signed certificate not accepted ===<br />
<br />
ownCloud uses [[Wikipedia:cURL]] and [[Wikipedia:SabreDAV]] to check if WebDAV is enabled.<br />
If you use SSL/TLS with a self-signed certificate, e.g. as shown in [[LAMP]], and access ownCloud's admin panel, you will see the following error message:<br />
<br />
Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken.<br />
<br />
Assuming that you followed the [[LAMP]] tutorial, execute the following steps:<br />
<br />
Create a local directory for non-distribution certificates and copy [[LAMP]]s certificate there. This will prevent {{ic|ca-certificates}}-updates from overwriting it.<br />
<br />
# cp /etc/httpd/conf/server.crt /usr/share/ca-certificates/''WWW.EXAMPLE.COM.crt''<br />
<br />
Add ''WWW.EXAMPLE.COM.crt'' to {{ic|/etc/ca-certificates.conf}}:<br />
<br />
''WWW.EXAMPLE.COM.crt''<br />
<br />
Now, regenerate your certificate store:<br />
<br />
# update-ca-certificates<br />
<br />
Restart the httpd service to activate your certificate.<br />
<br />
=== Self-signed certificate for Android devices ===<br />
<br />
Once you have followed the setup for SSL, as on [[Apache HTTP Server#TLS]] for example, early versions of DAVdroid will<br />
reject the connection because the certificate is not trusted. A certificate can be made as follows on your server:<br />
<br />
# openssl x509 -req -days 365 -in /etc/httpd/conf/server.csr -signkey /etc/httpd/conf/server.key -extfile android.txt -out CA.crt<br />
# openssl x509 -inform PEM -outform DER -in CA.crt -out CA.der.crt <br />
<br />
The file {{ic|android.txt}} should contain the following:<br />
<br />
basicConstraints=CA:true<br />
<br />
Then import {{ic|CA.der.crt}} to your Android device:<br />
<br />
Put the {{ic|CA.der.crt}} file onto the sdcard of your Android device (usually to the internal one, e.g. save from a mail attachment).<br />
It should be in the root directory. Go to ''Settings > Security > Credential storage'' and select ''Install from device storage''.<br />
The {{ic|.crt}} file will be detected and you will be prompted to enter a certificate name. After importing the certificate,<br />
you will find it in ''Settings > Security > Credential storage > Trusted credentials > User''.<br />
<br />
Thanks to: [https://web.archive.org/web/20150323082541/http://www.leftbrainthings.com/2013/10/13/creating-and-importing-self-signed-certificate-to-android-device/]<br />
<br />
Another way is to import the certificate directly from your server via [https://play.google.com/store/apps/details?id=at.bitfire.cadroid CAdroid]{{Dead link|2020|04|01|status=404}} and follow the instructions there.<br />
<br />
=== Cannot write into config directory! ===<br />
<br />
If you have set {{ic|open_basedir}} in your PHP/web server configuration file (e.g. {{ic|/etc/httpd/conf/extra/nextcloud.conf}}), make sure that it includes {{ic|/etc/webapps}}.<br />
<br />
Restart the web server to apply the change.<br />
<br />
You may need to "[[#php-fpm|explicitly grant write permissions on the appropriate Nextcloud paths]]" if you are getting this error after an upgrade from Nextcloud 17 to Nextcloud 18.<br />
<br />
=== Cannot create data directory ===<br />
<br />
If you have set {{ic|open_basedir}} in your PHP/web server configuration file (e.g. {{ic|/etc/httpd/conf/extra/nextcloud.conf}}), make sure that it includes the data directory.<br />
<br />
Restart the web server to apply the change.<br />
<br />
=== CSync failed to find a specific file. ===<br />
<br />
This is most likely a certificate issue. Recreate it, and do not leave the common name empty or you will see the error again.<br />
<br />
# openssl req -new -x509 -nodes -newkey rsa:4096 -keyout server.key -out server.crt<br />
<br />
=== Seeing white page after login ===<br />
<br />
The cause is probably a new app that you installed. To fix that, you can use the occ command as described<br />
[https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html here]. So with<br />
<br />
sudo -u http php /usr/share/webapps/nextcloud/occ app:list<br />
<br />
you can list all apps (if you installed nextcloud in the standard directory), and with <br />
<br />
sudo -u http php /usr/share/webapps/nextcloud/occ app:disable <nameOfExtension><br />
<br />
you can disable the troubling app.<br />
<br />
Alternatively, you can either use [[phpMyAdmin]] to edit the {{ic|oc_appconfig}} table (if you got lucky and the table has an edit option), or do it by hand with mysql:<br />
<br />
mysql -u root -p owncloud<br />
MariaDB [owncloud]> '''delete from''' oc_appconfig '''where''' appid='<nameOfExtension>' '''and''' configkey='enabled' '''and''' configvalue='yes';<br />
MariaDB [owncloud]> '''insert into''' oc_appconfig (appid,configkey,configvalue) '''values''' ('<nameOfExtension>','enabled','no');<br />
<br />
This should delete the relevant configuration from the table and add it again.<br />
<br />
=== GUI sync client fails to connect ===<br />
<br />
If using HTTP basic authentication, make sure to exclude "status.php", which must be publicly accessible. [https://github.com/owncloud/mirall/issues/734]<br />
<br />
=== GUI tray icon disappears, but client still running in the background ===<br />
<br />
After waking up from a suspended state, the Nextcloud client tray icon may disappear from the system tray. A workaround is to delay the startup of the client, as noted [https://github.com/nextcloud/desktop/issues/203#issuecomment-463957811 here]. This can be done with the .desktop file, for example:<br />
<br />
{{hc|.local/share/applications/nextcloud.desktop|<nowiki><br />
...<br />
Exec=bash -c 'sleep 5 && nextcloud'<br />
...<br />
</nowiki>}}<br />
<br />
=== Some files upload, but give an error 'Integrity constraint violation...' ===<br />
<br />
You may see the following error in the ownCloud sync client:<br />
<br />
SQLSTATE[23000]: Integrity constraint violation: ... Duplicate entry '...' for key 'fs_storage_path_hash')...<br />
<br />
This is caused by an issue with the File Locking app, which is often not sufficient to keep conflicts from occurring on some webserver configurations.<br />
A more complete [https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/files_locking_transactional.html Transactional File Locking]<br />
is available that rids these errors, but you must be using the Redis php-caching method. Install {{Pkg|redis}} and {{Pkg|php-redis}}, comment out<br />
your current php-cache mechanism, and then in {{ic|/etc/php/conf.d/redis.ini}} uncomment {{ic|1=extension=redis}}.<br />
Then in {{ic|config.php}} make the following changes:<br />
<br />
'memcache.local' => '\OC\Memcache\Redis',<br />
'filelocking.enabled' => 'true',<br />
'memcache.locking' => '\OC\Memcache\Redis',<br />
'redis' => array(<br />
'host' => 'localhost',<br />
'port' => 6379,<br />
'timeout' => 0.0,<br />
),<br />
<br />
and [[start/enable]] {{ic|redis.service}}.<br />
<br />
Finally, disable the File Locking App, as the Transational File Locking will take care of it (and would conflict).<br />
<br />
If everything is working, you should see 'Transactional File Locking Enabled' under Server Status on the Admin page, and syncs should no longer cause issues.<br />
<br />
=== "Cannot write into apps directory" ===<br />
<br />
As mentioned in the [https://docs.nextcloud.com/server/latest/admin_manual/apps_management.html official admin manual],<br />
either you need an apps directory that is writable by the http user, or you need to set {{ic|appstoreenabled}} to {{ic|false}}. <br />
<br />
If you have set {{ic|open_basedir}} in your PHP/web server configuration file (e.g. {{ic|/etc/httpd/conf/extra/nextcloud.conf}}), it may be necessary to add your ''/path/to/data'' directory to the string on the line starting with {{ic|php_admin_value open_basedir }}:<br />
<br />
{{hc|/etc/httpd/conf/extra/nextcloud.conf|2=<br />
<br />
php_admin_value open_basedir "''/path/to/data/'':/srv/http/:/dev/urandom:/tmp/:/usr/share/pear/:/usr/share/webapps/nextcloud/:/etc/webapps/nextcloud"<br />
}}<br />
<br />
=== Installed apps get blocked because of MIME type error ===<br />
<br />
If you are putting your apps folder outside of the nextcloud installation directory make sure your webserver serves it properly.<br />
<br />
In nginx this is accomplished by adding a location block to the nginx configuration as the folder will not be included in it by default.<br />
<br />
location ~ /apps2/(.*)$ {<br />
alias /var/www/nextcloud/apps/$1;<br />
}<br />
<br />
=== CSS and JS resources blocked due to MIME type error ===<br />
<br />
If you load your Nextcloud web gui and it's missing styles etc. check the browser's console logs for lines like:<br />
<br />
<nowiki>The resource from “https://example.com/core/css/guest.css?v=72c34c37-0” was blocked due to MIME type (“text/plain”) mismatch (X-Content-Type-Options: nosniff).</nowiki><br />
<br />
There are a few possible reasons, possibly you have [https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html#javascript-js-or-css-css-files-not-served-properly not included any mime types] in your {{ic|nginx.conf}} add the following to {{ic|nginx.conf}}<br />
<br />
types_hash_max_size 2048;<br />
types_hash_bucket_size 128;<br />
include mime.types;<br />
<br />
Here we use the {{ic|mime.types}} provided by {{Pkg|mailcap}}, due to the large number of types included we increase the allowed size of the types hash.<br />
<br />
Other possible reasons for these errors are missing permissions on the files. Make sure the files are owned by {{ic|http:http}} and can be read and written to by this user.<br />
<br />
=== Security warnings even though the recommended settings have been included in nginx.conf ===<br />
<br />
At the top of the admin page there might be a warning to set the {{ic|Strict-Transport-Security}}, {{ic|X-Content-Type-Options}},<br />
{{ic|X-Frame-Options}}, {{ic|X-XSS-Protection}} and {{ic|X-Robots-Tag}} according to https://docs.nextcloud.com/server/latest/admin_manual/installation/harden_server.html even though they are already set like that.<br />
<br />
A possible cause could be that because owncloud sets those settings, uwsgi passed them along and nginx added them again:<br />
<br />
{{hc|$ curl -I https://domain.tld|<nowiki><br />
...<br />
X-XSS-Protection: 1; mode=block<br />
X-Content-Type-Options: nosniff<br />
X-Frame-Options: Sameorigin<br />
X-Robots-Tag: none<br />
Strict-Transport-Security: max-age=15768000; includeSubDomains; preload;<br />
X-Content-Type-Options: nosniff<br />
X-Frame-Options: SAMEORIGIN<br />
X-XSS-Protection: 1; mode=block<br />
X-Robots-Tag: none<br />
</nowiki>}}<br />
<br />
While the fast_cgi sample config has a parameter to avoid that ( {{ic|fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice}} ), when using uwsgi and nginx the following modification of the uwsgi part in nginx.conf could help:<br />
<br />
{{hc| /etc/nginx/nginx.conf|<nowiki><br />
...<br />
# pass all .php or .php/path urls to uWSGI<br />
location ~ ^(.+\.php)(.*)$ {<br />
include uwsgi_params;<br />
uwsgi_modifier1 14;<br />
# hode following headers received from uwsgi, because otherwise we would send them twice since we already add them in nginx itself<br />
uwsgi_hide_header X-Frame-Options;<br />
uwsgi_hide_header X-XSS-Protection;<br />
uwsgi_hide_header X-Content-Type-Options;<br />
uwsgi_hide_header X-Robots-Tag;<br />
uwsgi_hide_header X-Frame-Options;<br />
#Uncomment line below if you get connection refused error. Remember to commet out line with "uwsgi_pass 127.0.0.1:3001;" below<br />
uwsgi_pass unix:/run/uwsgi/owncloud.sock;<br />
#uwsgi_pass 127.0.0.1:3001;<br />
}<br />
...<br />
</nowiki>}}<br />
<br />
=== "Reading from keychain failed with error: 'No keychain service available'" ===<br />
<br />
Can be fixed for Gnome by installing the following 2 packages, {{Pkg|libgnome-keyring}} and {{Pkg|gnome-keyring}}.<br />
Or the following for KDE, {{Pkg|libgnome-keyring}} and {{Pkg|qtkeychain-qt5}}.<br />
<br />
=== FolderSync: "Method Not Allowed" ===<br />
<br />
FolderSync needs access to {{ic|/owncloud/remote.php/webdav}}, so you could create another alias for owncloud in your {{ic|/etc/httpd/conf/extra/nextcloud.conf}}<br />
<br />
<IfModule mod_alias.c><br />
Alias /nextcloud /usr/share/webapps/nextcloud/<br />
Alias /owncloud /usr/share/webapps/nextcloud/<br />
</IfModule><br />
<br />
== See also ==<br />
<br />
* [https://docs.nextcloud.com/ Nextcloud Documentation Overview]<br />
* [https://docs.nextcloud.com/server/latest/admin_manual/ Nextcloud Admin Manual]</div>Hashworkshttps://wiki.archlinux.org/index.php?title=Talk:Nextcloud&diff=705551Talk:Nextcloud2021-12-11T15:57:33Z<p>Hashworks: /* Collabora section is outdated and should propably link to official documentation */ new section</p>
<hr />
<div>== Possible merge with owncloud ==<br />
<br />
''[[Moved from [[Talk:Nextcloud]]'' -- [[User:Rdeckard|Rdeckard]] ([[User_talk:Rdeckard|talk]]) 13:41, 7 January 2017 (UTC)<br />
<br />
I'm thinking many of the installation and configuration steps are identical between [[Nextcloud]] and [[Owncloud]]. We could possibly merge these two articles. There is some good info here that may be missing at [[Owncloud]]. I think unless there are drastic differences they should be combined. We could note any differences in the main article. -- [[User:Rdeckard|Rdeckard]] ([[User_talk:Rdeckard|talk]]) 01:52, 5 January 2017 (UTC)<br />
<br />
:Good idea. Are you offering to take point? [[User:Graysky|Graysky]] ([[User talk:Graysky|talk]]) 01:58, 7 January 2017 (UTC)<br />
<br />
::Sure. It actually looks like many of the sections are identical (were copied). I'll work on it. -- [[User:Rdeckard|Rdeckard]] ([[User_talk:Rdeckard|talk]]) 13:00, 7 January 2017 (UTC)<br />
<br />
::: Wait, shouldn't we create a new page merging the content, then setup redirects from 'owncloud' and 'nextcloud' to that new page? To me, the unified page would would allow for either package to be installed from one read without having all the clicking between pages like I see you have started to do. [[User:Graysky|Graysky]] ([[User talk:Graysky|talk]]) 13:22, 7 January 2017 (UTC)<br />
<br />
::::Right. That was temporary until I got everything merged piece-by-piece. It all now goes to [[ownCloud]] where both programs are treated. -- [[User:Rdeckard|Rdeckard]] ([[User_talk:Rdeckard|talk]]) 13:36, 7 January 2017 (UTC)<br />
<br />
::::: OK, if you're finished, I might take a look at further refining the unified page, but I don't want to deal with potential content collisions if we are both editing simultaneously :) [[User:Graysky|Graysky]] ([[User talk:Graysky|talk]]) 13:42, 7 January 2017 (UTC)<br />
<br />
::::::Go for it! I'm done with it for the morning. Thanks! -- [[User:Rdeckard|Rdeckard]] ([[User_talk:Rdeckard|talk]]) 13:44, 7 January 2017 (UTC)<br />
<br />
:::::::I Realize I am a bit late on this, but the fact that Nextcloud forked from ownCloud, wouldn't it have been advantageous to keep them separate as we don't know how long the install processes will remain the same / similiar? --[[User:TheFlyingFool|TheFlyingFool]] ([[User talk:TheFlyingFool|talk]]) 13:57, 25 January 2017 (UTC)<br />
<br />
::::::::We may have to revisit this again. But for now the setup and configuration are nearly the same. Personally I think the owncloud/nextcloud manuals do a great job with the details, so we should refer to them more often. If and when the installation process here diverges, we'll consider splitting again. -- [[User:Rdeckard|Rdeckard]] ([[User_talk:Rdeckard|talk]]) 13:50, 31 January 2017 (UTC)<br />
<br />
== Switch to cron from AJAX ==<br />
<br />
The [https://doc.owncloud.org/server/9.1/admin_manual/contents.html ownCloud 9.1 Server Administration Manual] on "Defining Background Jobs" states [https://doc.owncloud.org/server/9.1/admin_manual/configuration_server/background_jobs_configuration.html#cron cron] as the preferred method for executing regular tasks. It also states that [https://doc.owncloud.org/server/9.1/admin_manual/configuration_server/background_jobs_configuration.html#ajax AJAX] is "...the default option. Unfortunately, however, it is also the least reliable." The downside being AJAX requires regular visits to the page to trigger the background job. --[[User:Koopa|Koopa]] ([[User talk:Koopa|talk]]) 21:37, 7 February 2017 (UTC)<br />
<br />
:Versions of nextcloud from 12 and up suggests that both cron and systemd can be used, and I see no point in even mentioning cron, since it's a whole software piece that's missing from arch by default, and adding it to this article contributes nothing. Systemd should be used by default with Arch to integrate well with other parts of the OS, and not to confuse users with multiple scheduling tools. [[User:NeoTheFox|NeoTheFox]] ([[User talk:NeoTheFox|talk]]) 10:53, 28 August 2017 (UTC)<br />
<br />
== Uploaded file size limitation ==<br />
<br />
The article is missing raising file size limitation. Current max file size with the provided configs seems to be 512MB - 2GB depending on what you use to upload.<br />
<br />
This seems to be set in /usr/share/webapps/nextcloud/.user.ini for the web side, /tmp needs to be as big as all concurrent file uploads, and possibly more.<br />
<br />
Documentation is here: https://docs.nextcloud.com/server/12/admin_manual/configuration_files/big_file_upload_configuration.html?highlight=big%20file%20upload<br />
<br />
Am planning to figure this out and add it to the article sometimes in the future, but if someone does it before me I won't be mad.<br />
<br />
[[User:C0rn3j|C0rn3j]] ([[User talk:C0rn3j|talk]]) 10:51, 2 October 2017 (UTC)<br />
<br />
== Cron, file scan and preview timers ==<br />
<br />
I have changed the AUR repository from `nextcloud-systemd-cron` to<br />
`nextcloud-systemd-timers`. I did this change, because I have also included<br />
timers for periodic file scans and preview generation. If there is interest, I<br />
can add some lines about these timers to the Nextcloud Wiki article.<br />
<br />
{{Unsigned|09:34, 28 November 2018|Dschrempf}}<br />
<br />
:I have changed [https://wiki.archlinux.org/index.php?title=Nextcloud&type=revision&diff=557694&oldid=557305]. It sure is helpful, if you add a little about what is included. --[[User:Indigo|Indigo]] ([[User talk:Indigo|talk]]) 18:40, 28 November 2018 (UTC)<br />
<br />
== uWSGI INI ==<br />
<br />
I believe the INI file [https://wiki.archlinux.org/index.php/Nextcloud#uWSGI] included on this page has issues (at least it did for me). Those issues are resolved with a one-line addition to the bottom:<br />
{{bc|1=env = front_controller_active=true}}<br />
<br />
The issue being that the Nginx configuration provided throughout this page includes the following block:<br />
{{bc|1=location = / {<br />
rewrite ^ /index.php;<br />
}<br />
}}<br />
<br />
But this causes conflicts with the PHP-side's own URL rewriting. Adding the {{ic|front_controller_active}} environment variable clears this up.<br />
<br />
[[User:Djmoch|Djmoch]] ([[User talk:Djmoch|talk]]) 03:56, 31 December 2018 (UTC)<br />
<br />
== Add disclaimer for possible disadvantages of setting up nextcloud on a rolling-release OS ==<br />
<br />
Dear administrators,<br />
<br />
I would like to propose adding a disclaimer to the wiki about the possible disadvantages of setting up nextcloud on a rolling-release OS like Arch linux. I have a nextcloud server that became dysfunctional after a recent update from php 7.3 to 7.4, since nextcloud doesn't upgrade as fast as a rolling release OS does. Trying to downgrade to php 7.3 was not possible either, due to several dependencies failing to allow that. Please don't get me wrong, I do believe that Arch linux's rolling-release feature is one of its strengths but when it is not matched with the same agility in the development of other software packages, it may become a problem, like in the case described above.<br />
<br />
Thank you for your consideration.<br />
<br />
Hakova<br />
[[User:Hakova|Hakova]] ([[User talk:Hakova|talk]]) 17:16, 21 December 2019 (UTC)<br />
<br />
== Update Collabora section to include HTTPS for Docker container ==<br />
<br />
It appears the Docker image for the Collabora section uses http://127.0.0.1:9980/ in the nginx and Apache examples, but the default Docker image now ships listening with HTTPS, eg. https://127.0.0.1:9980/ or you get Bad Gateway errors from php-fpm.<br />
<br />
{{unsigned|22:04, 29 March 2020|Chetwisniewski}}<br />
<br />
== the "Make sure that session.save_path is configured." bit could use explanation ==<br />
<br />
I actually still do not know how to configure this.<br />
<br />
{{Unsigned|16:01, 21 September 2020 (UTC)|Zuntik}}<br />
<br />
I actually happen to have the same problem. I don't know how to configure this and miss some few more explanation. Setting up nextcloud still seems to be a very restricted thing to me.<br />
<br />
[[User:Manouchk|Manouchk]] ([[User talk:Manouchk|talk]]) 15:51, 10 January 2021 (UTC)<br />
<br />
<br />
== Recommended Configuration for Application Servers ==<br />
<br />
As 21.0.0 introduced the nextcloud user with no configuration alongside it, it is unclear to me how to handle this.<br />
For example: Say I have multiple PHP applications running. How should I configure my LEMP stack in regards to potentially having multiple instances of php-fpm. In a container world this would be trivially simple. Am I expected to create multiple php-fpm services with seperate configurations?<br />
If yes: Maybe there should be a way to start a php-fpm service with different configuration (like php-fpm@config-name.service)<br />
[[User:Scrumplex|Scrumplex]] ([[User talk:Scrumplex|talk]]) 21:52, 21 February 2021 (UTC)<br />
<br />
:Yes, the current section(s) explaining the various hosting options for nextcloud are still in dire need of clarification and fixes. We actually also require an entire dedicated page just to explain php-fpm properly.<br />
:That being said: Generally it is advisable to create one "pool" for each web application (i.e. one configuration file per application in {{ic|/etc/php/php-fpm.d/}}), especially when they are run as separate users.<br />
:The {{ic|php-fpm.service}} is run as root and creates these pools (which in turn are run as the specified user the application should run as).<br />
:I don't know, whether it is feasible or possible for templated services for php-fpm to be created per application, but at any rate, that is for upstream to implement and decide.<br />
:[[User:Davezerave|Davezerave]] ([[User talk:Davezerave|talk]]) 09:48, 22 February 2021 (UTC)<br />
<br />
:I added a php-fpm section and added more detail to the nginx section. I agree that we could use a dedicated php-fpm article to direct people to, but I think this article now has enough info for people work out how to use both with Nextcloud.<br />
:If the package is updated to include the example php-fpm config and [https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html the recommended nginx config files provided by Nextcloud] like it provides for Apache, the article could simply direct users to them.<br />
: [[User:Williamvds|Williamvds]] ([[User talk:Williamvds|talk]]) 17:35, 23 February 2021 (UTC)<br />
<br />
== Removing the fluff from the configuration section ==<br />
<br />
The only sections that are really necessary are the database setup and PHP setup sections. All the sections before them simply restate the default configurations of the package and are optional steps in configuration. I propose that [[Nextcloud#Data directory]], [[Nextcloud#Writable apps directory]], and [[Nextcloud#Log directory]] be merged into the main [[Nextcloud#Configuration]] section and be kept as brief as possible, mentioning primarily the appropriate key in config.php and any extra considerations like directory permissions. Anyone have any thoughts?<br />
[[User:Williamvds|Williamvds]] ([[User talk:Williamvds|talk]]) 18:01, 23 February 2021 (UTC)<br />
<br />
:Agreed. If you're new to Nextcloud, it is hard to setup if you're trying to follow the article step by step. We should strictly separate necessary and optional steps. Steffo has already simplyfied the article in his rewrite. [[User:Anarki|Anarki]] ([[User talk:Anarki|talk]]) 06:46, 6 May 2021 (UTC)<br />
<br />
== Nextcloud 21 rewrite ==<br />
<br />
I started (but definitely not completed) a rewrite over at [[User:Steffo/Nextcloud]], detailing the new process to install Nextcloud after the 21.0.0 update and checking whether the old instructions work or not.<br />
<br />
As this is my first major edit to Arch Wiki, feedback would be appreciated! Should I change something? Should I write directly in this page?<br />
<br />
[[User:Steffo|Steffo]] ([[User talk:Steffo|talk]]) 13:47, 28 February 2021 (UTC)<br />
<br />
<br />
:Having had trouble with Apache and the new user setup that the package now uses, I edited the page a little to add a warning about mpm_itk. As my apache server has too much stuff running off it for me to get all the different modules / requirements / incompatibilities to line up I've actually ended up using a second Apache process, running as nextcloud user and proxied to from the main one, which seems to make life a lot easier in the end. Maybe my note is not enough and more warning and explanation could be included regarding using Apache and the new package user? Personaly I think you can just go ahead and edit the page, I'm sure people will correct/revert anything they disagree with. Thanks for taking the time to work on this, the article certainly needs an overhaul with all the changes that have come in with v21. Regards [[User:Marcool04|Marcool04]] ([[User talk:Marcool04|talk]]) 14:03, 28 February 2021 (UTC)<br />
<br />
:Steffo, very good tutorial. I'd just put configuration of php-fpm into a separate section as you did in the Prerequisites e.g. after php setup, since it's independent of the web server itself. Also I'd put the configuration items in the same order as Prequisites. If you like I'd do some rearrangements and completions in your article. [[User:Anarki|Anarki]] ([[User talk:Anarki|talk]]) 06:36, 6 May 2021 (UTC)<br />
<br />
::Thanks for your feedback and contributions! :) [[User:Steffo|Steffo]] ([[User talk:Steffo|talk]]) 23:28, 9 May 2021 (UTC)<br />
<br />
== occ with uWSGI ==<br />
<br />
How can we run occ with uWSGI? Do we really need to mirror the ini of uWSGI in a php.ini configuration? Can't we run php through uWSGI?<br />
<br />
{{unsigned|15:53, 5 March 2021|FederAndInk}}<br />
<br />
== Issues with MariaDB >= 10.6 ==<br />
<br />
@[[User:Flyingpig|Flyingpig]] Thanks for further polishing this section. I'd like to discuss referencing {{Bug|71549}}. IMHO this is a dead-end. As [[User:Davezerave|Davezerave]] mentioned there:<br />
<br />
:It seems there is not much we can do about it for now.<br />
<br />
It's an upstream issue. So we should reference the [https://github.com/nextcloud/server/issues/25436 upstream ticket].<br />
<br />
(Actually the link is already present in the sentence "Upstream is aware of this [https://github.com/nextcloud/server/issues/25436 problem]...".)<br />
<br />
[[User:Wolegis|Wolegis]] ([[User talk:Wolegis|talk]]) 10:45, 24 July 2021 (UTC)<br />
<br />
:I figured a little bit of more context wouldn't hurt, but if you want to remove the link to {{Bug|71549}}, then go ahead. -- [[User:Flyingpig|Flyingpig]] ([[User talk:Flyingpig|talk]]) 12:18, 24 July 2021 (UTC)<br />
<br />
== Collabora section is outdated and should propably link to official documentation ==<br />
<br />
The current vhost examples are outdated and don't work with the current version. I guess we should link to the external documentation ([https://sdk.collaboraonline.com/docs/installation/CODE_Docker_image.html#how-to-grab-the-code-image-from-docker-image docker doc], [https://sdk.collaboraonline.com/docs/installation/Proxy_settings.html?highlight=nginx#reverse-proxy-with-nginx-webserver nginx config]) instead? Or do we want to keep stuff in the wiki even if it might be outdated?<br />
<br />
[[User:Hashworks|hashworks]] ([[User talk:Hashworks|talk]]) 15:57, 11 December 2021 (UTC)</div>Hashworkshttps://wiki.archlinux.org/index.php?title=Pacman/Tips_and_tricks&diff=698134Pacman/Tips and tricks2021-10-03T09:50:49Z<p>Hashworks: Surround glob by quotation marks to avoid shell interpretation</p>
<hr />
<div>{{Lowercase title}}<br />
[[Category:Package manager]]<br />
[[de:Pacman-Tipps]]<br />
[[es:Pacman (Español)/Tips and tricks]]<br />
[[fa:Pacman tips]]<br />
[[fr:Pacman (Français)/Tips and tricks]]<br />
[[it:Pacman (Italiano)/Tips and tricks]]<br />
[[ja:Pacman ヒント]]<br />
[[pt:Pacman (Português)/Tips and tricks]]<br />
[[ru:Pacman (Русский)/Tips and tricks]]<br />
[[zh-hans:Pacman (简体中文)/Tips and tricks]]<br />
{{Related articles start}}<br />
{{Related|Mirrors}}<br />
{{Related|Creating packages}}<br />
{{Related articles end}}<br />
For general methods to improve the flexibility of the provided tips or ''pacman'' itself, see [[Core utilities]] and [[Bash]].<br />
<br />
== Maintenance ==<br />
<br />
{{Expansion|{{ic|1=Usage=}} introduced with ''pacman'' 4.2, see [http://allanmcrae.com/2014/12/pacman-4-2-released/]}}<br />
<br />
{{Note|Instead of using ''comm'' (which requires sorted input with ''sort'') in the sections below, you may also use {{ic|grep -Fxf}} or {{ic|grep -Fxvf}}.}}<br />
<br />
See also [[System maintenance]].<br />
<br />
=== Listing packages ===<br />
<br />
==== With version ====<br />
<br />
You may want to get the list of installed packages with their version, which is useful when reporting bugs or discussing installed packages.<br />
<br />
* List all explicitly installed packages: {{ic|pacman -Qe}}.<br />
* List all packages in the [[package group]] named {{ic|''group''}}: {{ic|pacman -Sg ''group''}}<br />
* List all foreign packages (typically manually downloaded and installed or packages removed from the repositories): {{ic|pacman -Qm}}.<br />
* List all native packages (installed from the sync database(s)): {{ic|pacman -Qn}}.<br />
* List all explicitly installed native packages (i.e. present in the sync database) that are not direct or optional dependencies: {{ic|pacman -Qent}}.<br />
* List packages by regex: {{ic|pacman -Qs ''regex''}}.<br />
* List packages by regex with custom output format (needs {{Pkg|expac}}): {{ic|expac -s "%-30n %v" ''regex''}}.<br />
<br />
==== With size ====<br />
<br />
Figuring out which packages are largest can be useful when trying to free space on your hard drive. There are two options here: get the size of individual packages, or get the size of packages and their dependencies.<br />
<br />
===== Individual packages =====<br />
<br />
The following command will list all installed packages and their individual sizes:<br />
<br />
$ LC_ALL=C pacman -Qi | awk '/^Name/{name=$3} /^Installed Size/{print $4$5, name}' | sort -h<br />
<br />
===== Packages and dependencies =====<br />
<br />
To list package sizes with their dependencies,<br />
<br />
* Install {{Pkg|expac}} and run {{ic|expac -H M '%m\t%n' {{!}} sort -h}}.<br />
* Run {{Pkg|pacgraph}} with the {{ic|-c}} option.<br />
<br />
To list the download size of several packages (leave {{ic|''packages''}} blank to list all packages):<br />
<br />
$ expac -S -H M '%k\t%n' ''packages''<br />
<br />
To list explicitly installed packages not in the [[meta package]] {{Pkg|base}} nor [[package group]] {{Grp|base-devel}} with size and description:<br />
<br />
$ expac -H M "%011m\t%-20n\t%10d" $(comm -23 <(pacman -Qqen | sort) <({ pacman -Qqg base-devel; expac -l '\n' '%E' base; } | sort | uniq)) | sort -n<br />
<br />
To list the packages marked for upgrade with their download size<br />
<br />
$ expac -S -H M '%k\t%n' $(pacman -Qqu) | sort -sh<br />
<br />
==== By date ====<br />
<br />
To list the 20 last installed packages with {{Pkg|expac}}, run:<br />
<br />
$ expac --timefmt='%Y-%m-%d %T' '%l\t%n' | sort | tail -n 20<br />
<br />
or, with seconds since the epoch (1970-01-01 UTC):<br />
<br />
$ expac --timefmt=%s '%l\t%n' | sort -n | tail -n 20<br />
<br />
==== Not in a specified group, repository or meta package ====<br />
<br />
{{Note|To get a list of packages installed as dependencies but no longer required by any installed package, see [[#Removing unused packages (orphans)]].<br />
}}<br />
<br />
List explicitly installed packages not in the {{Pkg|base}} [[meta package]]:<br />
<br />
$ comm -23 <(pacman -Qqe | sort) <(expac -l '\n' '%E' base | sort)<br />
<br />
List explicitly installed packages not in the {{Pkg|base}} meta package or {{Grp|base-devel}} [[package group]]:<br />
<br />
$ comm -23 <(pacman -Qqe | sort) <({ pacman -Qqg base-devel; expac -l '\n' '%E' base; } | sort -u)<br />
<br />
List all installed packages unrequired by other packages, and which are not in the {{Pkg|base}} meta package or {{Grp|base-devel}} package group:<br />
<br />
$ comm -23 <(pacman -Qqt | sort) <({ pacman -Qqg base-devel; expac -l '\n' '%E' base; } | sort -u)<br />
<br />
As above, but with descriptions:<br />
<br />
$ expac -H M '%-20n\t%10d' $(comm -23 <(pacman -Qqt | sort) <({ pacman -Qqg base-devel; expac -l '\n' '%E' base; } | sort -u))<br />
<br />
List all installed packages that are ''not'' in the specified repository ''repo_name''<br />
<br />
$ comm -23 <(pacman -Qq | sort) <(pacman -Sql ''repo_name'' | sort)<br />
<br />
List all installed packages that are in the ''repo_name'' repository:<br />
<br />
$ comm -12 <(pacman -Qq | sort) <(pacman -Sql ''repo_name'' | sort)<br />
<br />
List all packages on the Arch Linux ISO that are not in the {{Pkg|base}} meta package:<br />
<br />
<nowiki>$ comm -23 <(curl https://gitlab.archlinux.org/archlinux/archiso/-/raw/master/configs/releng/packages.x86_64) <(expac -l '\n' '%E' base | sort)</nowiki><br />
<br />
{{Tip|Alternatively, use {{ic|combine}} (instead of {{ic|comm}}) from the {{Pkg|moreutils}} package which has a syntax that is easier to remember. See {{man|1|combine}}.}}<br />
<br />
==== Development packages ====<br />
<br />
To list all development/unstable packages, run:<br />
<br />
$ pacman -Qq | grep -Ee '-(bzr|cvs|darcs|git|hg|svn)$'<br />
<br />
=== Browsing packages ===<br />
<br />
To browse all installed packages with an instant preview of each package:<br />
<br />
$ pacman -Qq | fzf --preview 'pacman -Qil {}' --layout=reverse --bind 'enter:execute(pacman -Qil {} | less)'<br />
<br />
This uses [[fzf]] to present a two-pane view listing all packages with package info shown on the right.<br />
<br />
Enter letters to filter the list of packages; use arrow keys (or {{ic|Ctrl-j}}/{{ic|Ctrl-k}}) to navigate; press {{ic|Enter}} to see package info under ''less''.<br />
<br />
To browse all packages currently known to ''pacman'' (both installed and not yet installed) in a similar way, using fzf, use:<br />
<br />
$ pacman -Slq | fzf --preview 'pacman -Si {}' --layout=reverse<br />
<br />
The navigational keybindings are the same, although Enter will not work in the same way.<br />
<br />
=== Listing files owned by a package with size ===<br />
<br />
This one might come in handy if you have found that a specific package uses a huge amount of space and you want to find out which files make up the most of that.<br />
<br />
$ pacman -Qlq ''package'' | grep -v '/$' | xargs -r du -h | sort -h<br />
<br />
=== Identify files not owned by any package ===<br />
<br />
If your system has stray files not owned by any package (a common case if you do not [[Enhance system stability#Use the package manager to install software|use the package manager to install software]]), you may want to find such files in order to clean them up.<br />
<br />
One method is to use {{ic|pacreport --unowned-files}} as the root user from {{Pkg|pacutils}} which will list unowned files among other details.<br />
<br />
Another is to list all files of interest and check them against ''pacman'':<br />
<br />
# find /etc /usr /opt | LC_ALL=C pacman -Qqo - 2>&1 >&- >/dev/null | cut -d ' ' -f 5-<br />
<br />
{{Tip|The {{Pkg|lostfiles}} script performs similar steps, but also includes an extensive blacklist to remove common false positives from the output.}}<br />
<br />
=== Tracking unowned files created by packages ===<br />
<br />
Most systems will slowly collect several [http://ftp.rpm.org/max-rpm/s1-rpm-inside-files-list-directives.html#S3-RPM-INSIDE-FLIST-GHOST-DIRECTIVE ghost] files such as state files, logs, indexes, etc. through the course of usual operation.<br />
<br />
{{ic|pacreport}} from {{Pkg|pacutils}} can be used to track these files and their associations via {{ic|/etc/pacreport.conf}} (see {{man|1|pacreport|FILES}}).<br />
<br />
An example may look something like this (abridged):<br />
<br />
{{hc|/etc/pacreport.conf|2=<br />
[Options]<br />
IgnoreUnowned = usr/share/applications/mimeinfo.cache<br />
<br />
[PkgIgnoreUnowned]<br />
alsa-utils = var/lib/alsa/asound.state<br />
bluez = var/lib/bluetooth<br />
ca-certificates = etc/ca-certificates/trust-source/*<br />
dbus = var/lib/dbus/machine-id<br />
glibc = etc/ld.so.cache<br />
grub = boot/grub/*<br />
linux = boot/initramfs-linux.img<br />
pacman = var/lib/pacman/local<br />
update-mime-database = usr/share/mime/magic<br />
}}<br />
<br />
Then, when using {{ic|pacreport --unowned-files}} as the root user, any unowned files will be listed if the associated package is no longer installed (or if any new files have been created).<br />
<br />
Additionally, [https://github.com/CyberShadow/aconfmgr aconfmgr] ({{AUR|aconfmgr-git}}) allows tracking modified and orphaned files using a configuration script.<br />
<br />
=== Removing unused packages (orphans) ===<br />
<br />
For recursively removing orphans and their configuration files:<br />
<br />
# pacman -Qtdq | pacman -Rns -<br />
<br />
If no orphans were found, the output is {{ic|error: argument '-' specified with empty stdin}}. This is expected as no arguments were passed to {{ic|pacman -Rns}}.<br />
<br />
{{Note|The arguments {{ic|-Qt}} list only true orphans. To include packages which are ''optionally'' required by another package, pass the {{ic|-t}} flag twice (''i.e.'', {{ic|-Qtt}}).}}<br />
<br />
=== Removing everything but essential packages ===<br />
<br />
If it is ever necessary to remove all packages except the essentials packages, one method is to set the installation reason of the non-essential ones as dependency and then remove all unnecessary dependencies.<br />
<br />
First, for all the packages installed "as explicitly", change their installation reason to "as dependency":<br />
<br />
# pacman -D --asdeps $(pacman -Qqe)<br />
<br />
Then, change the installation reason to "as explicitly" of only the essential packages, those you '''do not''' want to remove, in order to avoid targeting them:<br />
<br />
# pacman -D --asexplicit base linux linux-firmware<br />
<br />
{{Note|<br />
* Additional packages can be added to the above command in order to avoid being removed. See [[Installation guide#Install essential packages]] for more info on other packages that may be necessary for a fully functional base system.<br />
* This will also select the bootloader's package for removal. The system should still be bootable, but the boot parameters might not be changeable without it.<br />
}}<br />
<br />
Finally, follow the instructions in [[#Removing unused packages (orphans)]] to remove all packages that have installation reason "as dependency".<br />
<br />
=== Getting the dependencies list of several packages ===<br />
<br />
Dependencies are alphabetically sorted and doubles are removed.<br />
<br />
{{Note|To only show the tree of local installed packages, use {{ic|pacman -Qi}}.}}<br />
<br />
$ LC_ALL=C pacman -Si ''packages'' | awk -F'[:<=>]' '/^Depends/ {print $2}' | xargs -n1 | sort -u<br />
<br />
Alternatively, with {{Pkg|expac}}: <br />
<br />
$ expac -l '\n' %E -S ''packages'' | sort -u<br />
<br />
=== Listing changed backup files ===<br />
<br />
{{Accuracy|What is the connection of this section to [[System backup]]? Listing modified "backup files" does not show files which are not tracked by ''pacman''.|section=Warning about listing changed backup files}}<br />
<br />
If you want to back up your system configuration files, you could copy all files in {{ic|/etc/}} but usually you are only interested in the files that you have changed. Modified [[Pacnew and Pacsave files#Package backup files|backup files]] can be viewed with the following command:<br />
<br />
# pacman -Qii | awk '/^MODIFIED/ {print $2}'<br />
<br />
Running this command with root permissions will ensure that files readable only by root (such as {{ic|/etc/sudoers}}) are included in the output.<br />
<br />
{{Tip|See [[#Listing all changed files from packages]] to list all changed files ''pacman'' knows about, not only backup files.}}<br />
<br />
=== Back up the pacman database ===<br />
<br />
The following command can be used to back up the local ''pacman'' database:<br />
<br />
$ tar -cjf pacman_database.tar.bz2 /var/lib/pacman/local<br />
<br />
Store the backup ''pacman'' database file on one or more offline media, such as a USB stick, external hard drive, or CD-R.<br />
<br />
The database can be restored by moving the {{ic|pacman_database.tar.bz2}} file into the {{ic|/}} directory and executing the following command:<br />
<br />
# tar -xjvf pacman_database.tar.bz2<br />
<br />
{{Note|If the ''pacman'' database files are corrupted, and there is no backup file available, there exists some hope of rebuilding the ''pacman'' database. Consult [[#Restore pacman's local database]].}}<br />
<br />
{{Tip|The {{AUR|pakbak-git}} package provides a script and a [[systemd]] service to automate the task. Configuration is possible in {{ic|/etc/pakbak.conf}}.}}<br />
<br />
=== Check changelogs easily ===<br />
<br />
When maintainers update packages, commits are often commented in a useful fashion. Users can quickly check these from the command line by installing {{AUR|pacolog}}. This utility lists recent commit messages for packages from the official repositories or the AUR, by using {{ic|pacolog <package>}}.<br />
<br />
== Installation and recovery ==<br />
<br />
Alternative ways of getting and restoring packages.<br />
<br />
=== Installing packages from a CD/DVD or USB stick ===<br />
<br />
{{Merge|#Custom local repository|Use as an example and avoid duplication}}<br />
<br />
To download packages, or groups of packages:<br />
<br />
# cd ~/Packages<br />
# pacman -Syw --cachedir . base base-devel grub-bios xorg gimp<br />
# repo-add ./custom.db.tar.gz ./*<br />
<br />
Pacman, which will reference the host installation by default, will not properly resolve and download existing dependencies. In cases where all packages and dependencies are wanted, it is recommended to create a temporary blank DB and reference it with {{ic|--dbpath}}:<br />
<br />
# mkdir /tmp/blankdb<br />
# pacman -Syw --cachedir . --dbpath /tmp/blankdb base base-devel grub-bios xorg gimp<br />
# repo-add ./custom.db.tar.gz ./*<br />
<br />
Then you can burn the "Packages" folder to a CD/DVD or transfer it to a USB stick, external HDD, etc.<br />
<br />
To install:<br />
<br />
'''1.''' Mount the media:<br />
<br />
# mkdir /mnt/repo<br />
# mount /dev/sr0 /mnt/repo #For a CD/DVD.<br />
# mount /dev/sdxY /mnt/repo #For a USB stick.<br />
<br />
'''2.''' Edit {{ic|pacman.conf}} and add this repository ''before'' the other ones (e.g. extra, core, etc.). This is important. Do not just uncomment the one on the bottom. This way it ensures that the files from the CD/DVD/USB take precedence over those in the standard repositories:<br />
<br />
{{hc|/etc/pacman.conf|2=<br />
[custom]<br />
SigLevel = PackageRequired<br />
Server = file:///mnt/repo/Packages}}<br />
<br />
'''3.''' Finally, synchronize the ''pacman'' database to be able to use the new repository:<br />
<br />
# pacman -Syu<br />
<br />
=== Custom local repository ===<br />
<br />
Use the ''repo-add'' script included with ''pacman'' to generate a database for a personal repository. Use {{ic|repo-add --help}} for more details on its usage. <br />
A package database is a tar file, optionally compressed. Valid extensions are ''.db'' or ''.files'' followed by an archive extension of ''.tar'', ''.tar.gz'', ''.tar.bz2'', ''.tar.xz'', ''.tar.zst'', or ''.tar.Z''. The file does not need to exist, but all parent directories must exist.<br />
<br />
To add a new package to the database, or to replace the old version of an existing package in the database, run:<br />
<br />
$ repo-add ''/path/to/repo.db.tar.gz /path/to/package-1.0-1-x86_64.pkg.tar.xz''<br />
<br />
The database and the packages do not need to be in the same directory when using ''repo-add'', but keep in mind that when using ''pacman'' with that database, they should be together. Storing all the built packages to be included in the repository in one directory also allows to use shell glob expansion to add or update multiple packages at once:<br />
<br />
$ repo-add ''/path/to/repo.db.tar.gz /path/to/*.pkg.tar.xz''<br />
<br />
{{Warning|''repo-add'' adds the entries into the database in the same order as passed on the command line. If multiple versions of the same package are involved, care must be taken to ensure that the correct version is added last. In particular, note that lexical order used by the shell depends on the locale and differs from the {{man|8|vercmp}} ordering used by ''pacman''.}}<br />
<br />
If you are looking to support multiple architectures then precautions should be taken to prevent errors from occurring. Each architecture should have its own directory tree:<br />
<br />
{{hc|$ tree ~/customrepo/ {{!}} sed "s/$(uname -m)/<arch>/g"|<br />
/home/archie/customrepo/<br />
└── <arch><br />
├── customrepo.db -> customrepo.db.tar.xz<br />
├── customrepo.db.tar.xz<br />
├── customrepo.files -> customrepo.files.tar.xz<br />
├── customrepo.files.tar.xz<br />
└── personal-website-git-b99cce0-1-<arch>.pkg.tar.xz<br />
<br />
1 directory, 5 files<br />
}}<br />
<br />
The ''repo-add'' executable checks if the package is appropriate. If this is not the case you will be running into error messages similar to this:<br />
<br />
==> ERROR: '/home/archie/customrepo/<arch>/foo-<arch>.pkg.tar.xz' does not have a valid database archive extension.<br />
<br />
''repo-remove'' is used to remove packages from the package database, except that only package names are specified on the command line.<br />
<br />
$ repo-remove ''/path/to/repo.db.tar.gz pkgname''<br />
<br />
Once the local repository database has been created, add the repository to {{ic|pacman.conf}} for each system that is to use the repository. An example of a custom repository is in {{ic|pacman.conf}}. The repository's name is the database filename with the file extension omitted. In the case of the example above the repository's name would simply be ''repo''. Reference the repository's location using a {{ic|file://}} url, or via FTP using ftp://localhost/path/to/directory.<br />
<br />
If willing, add the custom repository to the [[Unofficial user repositories|list of unofficial user repositories]], so that the community can benefit from it.<br />
<br />
=== Network shared pacman cache ===<br />
<br />
{{Merge|Package_Proxy_Cache|Same topic}}<br />
If you happen to run several Arch boxes on your LAN, you can share packages so that you can greatly decrease your download times. Keep in mind you should not share between different architectures (i.e. i686 and x86_64) or you will run into problems.<br />
<br />
==== Read-only cache ====<br />
<br />
{{Note|1=If pacman fails to download 3 packages from the server, it will use another mirror instead. See https://bbs.archlinux.org/viewtopic.php?id=268066.}}<br />
<br />
If you are looking for a quick solution, you can simply run a standalone webserver, e.g. {{Pkg|darkhttpd}}, which other computers can use as a first mirror:<br />
<br />
# ln -s /var/lib/pacman/sync/*.db /var/cache/pacman/pkg<br />
$ sudo -u http darkhttpd /var/cache/pacman/pkg --no-server-id<br />
<br />
You could also run darkhttpd as a ''systemd'' service for convenience. Just add this server at the top of your {{ic|/etc/pacman.d/mirrorlist}} in client machines with {{ic|<nowiki>Server = http://mymirror:8080</nowiki>}}. Make sure to keep your mirror updated.<br />
<br />
If you are already running a web server for some other purpose, you might wish to reuse that as your local repository server instead of ''darkhttpd''. For example, if you already serve a site with [[nginx]], you can add an ''nginx'' server block listening on port 8080:<br />
<br />
{{hc|/etc/nginx/nginx.conf|<br />
server {<br />
listen 8080;<br />
root /var/cache/pacman/pkg;<br />
server_name myarchrepo.localdomain;<br />
try_files $uri $uri/;<br />
}<br />
}}<br />
<br />
Remember to restart ''nginx'' after making this change.<br />
<br />
Whichever web server you use, remember to open port 8080 to local traffic (and you probably want to deny anything not local). For example, if using [[iptables]], add {{ic|-s 192.168.0.0/16 -p tcp --dport 8080 -j ACCEPT}} to your ruleset (adjust for your LAN subnet if necessary).<br />
<br />
==== Overlay mount of read-only cache ====<br />
<br />
It is possible to use one machine on a local network as a read-only package cache by [[Overlay_filesystem|overlay mounting]] its {{ic|/var/cache/pacman/pkg}} directory. Such a configuration is advantageous if this server has installed on it a reasonably comprehensive selection of up-to-date packages which are also used by other boxes. This is useful for maintaining a number of machines at the end of a low bandwidth upstream connection.<br />
<br />
As an example, to use this method:<br />
<br />
# mkdir /tmp/remote_pkg /mnt/workdir_pkg /tmp/pacman_pkg<br />
# sshfs <remote_username>@<remote_pkgcache_addr>:/var/cache/pacman/pkg /tmp/remote_pkg -C<br />
# mount -t overlay overlay -o lowerdir=/tmp/remote_pkg,upperdir=/var/cache/pacman/pkg,workdir=/mnt/workdir_pkg /tmp/pacman_pkg<br />
<br />
[[Overlay_filesystem#Usage|Note concerning overlay]]: The working directory must be an empty directory on the same mounted device as the upper directory.<br />
<br />
After this, run ''pacman'' using the option {{ic|--cachedir /tmp/pacman_pkg}}, e.g.:<br />
<br />
# pacman -Syu --cachedir /tmp/pacman_pkg<br />
<br />
==== Distributed read-only cache ====<br />
<br />
There are Arch-specific tools for automatically discovering other computers on your network offering a package cache. Try {{Pkg|pacredir}}, [[pacserve]], {{AUR|pkgdistcache}}, or {{AUR|paclan}}. pkgdistcache uses Avahi instead of plain UDP which may work better in certain home networks that route instead of bridge between WiFi and Ethernet.<br />
<br />
Historically, there was [https://bbs.archlinux.org/viewtopic.php?id=64391 PkgD] and [https://github.com/toofishes/multipkg multipkg], but they are no longer maintained.<br />
<br />
==== Read-write cache ====<br />
<br />
In order to share packages between multiple computers, simply share {{ic|/var/cache/pacman/}} using any network-based mount protocol. This section shows how to use [[shfs]] or [[SSHFS]] to share a package cache plus the related library-directories between multiple computers on the same local network. Keep in mind that a network shared cache can be slow depending on the file-system choice, among other factors.<br />
<br />
First, install any network-supporting filesystem packages: {{Pkg|shfs-utils}}, {{Pkg|sshfs}}, {{Pkg|curlftpfs}}, {{Pkg|samba}} or {{Pkg|nfs-utils}}.<br />
<br />
{{Tip|<br />
* To use ''sshfs'' or ''shfs'', consider reading [[Using SSH Keys]].<br />
* By default, ''smbfs'' does not serve filenames that contain colons, which results in the client downloading the offending package afresh. To prevent this, use the {{ic|mapchars}} mount option on the client.<br />
}}<br />
<br />
Then, to share the actual packages, mount {{ic|/var/cache/pacman/pkg}} from the server to {{ic|/var/cache/pacman/pkg}} on every client machine.<br />
<br />
{{Warning|Do not make {{ic|/var/cache/pacman/pkg}} or any of its ancestors (e.g., {{ic|/var}}) a symlink. Pacman expects these to be directories. When ''pacman'' re-installs or upgrades itself, it will remove the symlinks and create empty directories instead. However during the transaction ''pacman'' relies on some files residing there, hence breaking the update process. Refer to {{Bug|50298}} for further details.}}<br />
<br />
==== two-way with rsync ====<br />
<br />
Another approach in a local environment is [[rsync]]. Choose a server for caching and enable the [[Rsync#rsync daemon]]. On clients synchronize two-way with this share via the rsync protocol. Filenames that contain colons are no problem for the rsync protocol.<br />
<br />
Draft example for a client, using {{ic|uname -m}} within the share name ensures an architecture-dependent sync:<br />
# rsync rsync://server/share_$(uname -m)/ /var/cache/pacman/pkg/ ...<br />
# pacman ...<br />
# paccache ...<br />
# rsync /var/cache/pacman/pkg/ rsync://server/share_$(uname -m)/ ...<br />
<br />
==== Dynamic reverse proxy cache using nginx ====<br />
<br />
[[nginx]] can be used to proxy package requests to official upstream mirrors and cache the results to the local disk. All subsequent requests for that package will be served directly from the local cache, minimizing the amount of internet traffic needed to update a large number of computers. <br />
<br />
In this example, the cache server will run at {{ic|<nowiki>http://cache.domain.example:8080/</nowiki>}} and store the packages in {{ic|/srv/http/pacman-cache/}}. <br />
<br />
Install [[nginx]] on the computer that is going to host the cache. Create the directory for the cache and adjust the permissions so nginx can write files to it:<br />
<br />
# mkdir /srv/http/pacman-cache<br />
# chown http:http /srv/http/pacman-cache<br />
<br />
Use the [https://github.com/nastasie-octavian/nginx_pacman_cache_config/blob/c54eca4776ff162ab492117b80be4df95880d0e2/nginx.conf nginx pacman cache config] as a starting point for {{ic|/etc/nginx/nginx.conf}}. Check that the {{ic|resolver}} directive works for your needs. In the upstream server blocks, configure the {{ic|proxy_pass}} directives with addresses of official mirrors, see examples in the config file about the expected format. Once you are satisfied with the configuration file [[Nginx#Running|start and enable nginx]].<br />
<br />
In order to use the cache each Arch Linux computer (including the one hosting the cache) must have the following line at the top of the {{ic|mirrorlist}} file:<br />
<br />
{{hc|/etc/pacman.d/mirrorlist|<nowiki><br />
Server = http://cache.domain.example:8080/$repo/os/$arch<br />
...<br />
</nowiki>}}<br />
<br />
{{Note| You will need to create a method to clear old packages, as the cache directory will continue to grow over time. {{ic|paccache}} (which is provided by {{Pkg|pacman-contrib}}) can be used to automate this using retention criteria of your choosing. For example, {{ic|find /srv/http/pacman-cache/ -type d -exec paccache -v -r -k 2 -c {} \;}} will keep the last 2 versions of packages in your cache directory.}}<br />
<br />
==== Pacoloco proxy cache server ====<br />
<br />
[https://github.com/anatol/pacoloco Pacoloco] is an easy-to-use proxy cache server for ''pacman'' repositories. It also allows [https://github.com/anatol/pacoloco/commit/048b09956b0d8ef71c0ed1f804fd332d9ab5e3c8 automatic prefetching] of the cached packages.<br />
<br />
It can be installed as {{Pkg|pacoloco}}. Open the configuration file and add ''pacman'' mirrors:<br />
<br />
{{hc|/etc/pacoloco.yaml|<nowiki><br />
port: 9129<br />
repos:<br />
mycopy:<br />
urls:<br />
- http://mirror.lty.me/archlinux<br />
- http://mirrors.kernel.org/archlinux<br />
</nowiki>}}<br />
<br />
[[Restart]] {{ic|pacoloco.service}} and the proxy repository will be available at {{ic|http://''myserver'':9129/repo/mycopy}}.<br />
<br />
==== Flexo proxy cache server ====<br />
<br />
[https://github.com/nroi/flexo Flexo] is yet another proxy cache server for ''pacman'' repositories. Flexo is available as {{AUR|flexo-git}}. Once installed, [[start]] the {{ic|flexo.service}} unit.<br />
<br />
Flexo runs on port {{ic|7878}} by default. Enter {{ic|1=Server = http://''myserver'':7878/$repo/os/$arch}} to the top of your {{ic|/etc/pacman.d/mirrorlist}} so that ''pacman'' downloads packages via Flexo.<br />
<br />
==== Synchronize pacman package cache using synchronization programs ====<br />
<br />
Use [[Syncthing]] or [[Resilio Sync]] to synchronize the ''pacman'' cache folders (i.e. {{ic|/var/cache/pacman/pkg}}).<br />
<br />
==== Preventing unwanted cache purges ====<br />
<br />
By default, {{ic|pacman -Sc}} removes package tarballs from the cache that correspond to packages that are not installed on the machine the command was issued on. Because ''pacman'' cannot predict what packages are installed on all machines that share the cache, it will end up deleting files that should not be.<br />
<br />
To clean up the cache so that only ''outdated'' tarballs are deleted, add this entry in the {{ic|[options]}} section of {{ic|/etc/pacman.conf}}:<br />
<br />
CleanMethod = KeepCurrent<br />
<br />
=== Recreate a package from the file system ===<br />
<br />
To recreate a package from the file system, use {{AUR|fakepkg}}. Files from the system are taken as they are, hence any modifications will be present in the assembled package. Distributing the recreated package is therefore discouraged; see [[ABS]] and [[Arch Linux Archive]] for alternatives.<br />
<br />
=== List of installed packages ===<br />
<br />
Keeping a list of all the explicitly installed packages can be useful, to backup a system for example or speed up installation on a new system:<br />
<br />
$ pacman -Qqe > pkglist.txt<br />
<br />
{{Note|<br />
* With option {{ic|-t}}, the packages already required by other explicitly installed packages are not mentioned. If reinstalling from this list they will be installed but as dependencies only.<br />
* With option {{ic|-n}}, foreign packages (e.g. from [[AUR]]) would be omitted from the list.<br />
* Use {{ic|comm -13 <(pacman -Qqdt {{!}} sort) <(pacman -Qqdtt {{!}} sort) > optdeplist.txt}} to also create a list of the installed optional dependencies which can be reinstalled with {{ic|--asdeps}}.<br />
* Use {{ic|pacman -Qqem > foreignpkglist.txt}} to create the list of AUR and other foreign packages that have been explicitly installed.}}<br />
<br />
To keep an up-to-date list of explicitly installed packages (e.g. in combination with a versioned {{ic|/etc/}}), you can set up a [[Pacman#Hooks|hook]]. Example:<br />
<br />
[Trigger]<br />
Operation = Install<br />
Operation = Remove<br />
Type = Package<br />
Target = *<br />
<br />
[Action]<br />
When = PostTransaction<br />
Exec = /bin/sh -c '/usr/bin/pacman -Qqe > /etc/pkglist.txt'<br />
<br />
=== Install packages from a list ===<br />
<br />
To install packages from a previously saved list of packages, while not reinstalling previously installed packages that are already up-to-date, run:<br />
<br />
# pacman -S --needed - < pkglist.txt<br />
<br />
However, it is likely foreign packages such as from the AUR or installed locally are present in the list. To filter out from the list the foreign packages, the previous command line can be enriched as follows:<br />
<br />
# pacman -S --needed $(comm -12 <(pacman -Slq | sort) <(sort pkglist.txt))<br />
<br />
Eventually, to make sure the installed packages of your system match the list and remove all the packages that are not mentioned in it:<br />
<br />
# pacman -Rsu $(comm -23 <(pacman -Qq | sort) <(sort pkglist.txt))<br />
<br />
{{Tip|These tasks can be automated. See {{AUR|bacpac}}, {{AUR|packup}}, {{AUR|pacmanity}}, and {{AUR|pug}} for examples.}}<br />
<br />
=== Listing all changed files from packages ===<br />
<br />
If you are suspecting file corruption (e.g. by software/hardware failure), but are unsure if files were corrupted, you might want to compare with the hash sums in the packages. This can be done with {{Pkg|pacutils}}:<br />
<br />
# paccheck --md5sum --quiet<br />
<br />
For recovery of the database see [[#Restore pacman's local database]]. The {{ic|mtree}} files can also be [[#Viewing a single file inside a .pkg file|extracted as {{ic|.MTREE}} from the respective package files]].<br />
<br />
{{Note|This should '''not''' be used as is when suspecting malicious changes! In this case security precautions such as using a live medium and an independent source for the hash sums are advised.}}<br />
<br />
=== Reinstalling all packages ===<br />
<br />
To reinstall all native packages, use:<br />
<br />
# pacman -Qqn | pacman -S -<br />
<br />
Foreign (AUR) packages must be reinstalled separately; you can list them with {{ic|pacman -Qqm}}.<br />
<br />
Pacman preserves the [[installation reason]] by default.<br />
<br />
{{Warning|To force all packages to be overwritten, use {{ic|1=--overwrite="*"}}, though this should be an absolute last resort. See [[System maintenance#Avoid certain pacman commands]].}}<br />
<br />
=== Restore pacman's local database ===<br />
<br />
See [[pacman/Restore local database]].<br />
<br />
=== Recovering a USB key from existing install ===<br />
<br />
If you have Arch installed on a USB key and manage to mess it up (e.g. removing it while it is still being written to), then it is possible to re-install all the packages and hopefully get it back up and working again (assuming USB key is mounted in {{ic|/newarch}})<br />
<br />
# pacman -S $(pacman -Qq --dbpath /newarch/var/lib/pacman) --root /newarch --dbpath /newarch/var/lib/pacman<br />
<br />
=== Viewing a single file inside a .pkg file ===<br />
<br />
For example, if you want to see the contents of {{ic|/etc/systemd/logind.conf}} supplied within the {{Pkg|systemd}} package:<br />
<br />
$ bsdtar -xOf /var/cache/pacman/pkg/systemd-204-3-x86_64.pkg.tar.xz etc/systemd/logind.conf<br />
<br />
Or you can use {{Pkg|vim}} to browse the archive:<br />
<br />
$ vim /var/cache/pacman/pkg/systemd-204-3-x86_64.pkg.tar.xz<br />
<br />
=== Find applications that use libraries from older packages ===<br />
<br />
Even if you installed a package the existing long-running programs (like daemons and servers) still keep using code from old package libraries. And it is a bad idea to let these programs running if the old library contains a security bug.<br />
<br />
Here is a way how to find all the programs that use old packages code:<br />
<br />
# lsof +c 0 | grep -w DEL | awk '1 { print $1 ": " $NF }' | sort -u<br />
It will print running program name and old library that was removed or replaced with newer content.<br />
<br />
=== Installing only content in required languages ===<br />
<br />
Many packages attempt to install documentation and translations in several languages. Some programs are designed to remove such unnecessary files, such as {{AUR|localepurge}}, which runs after a package is installed to delete the unneeded locale files. A more direct approach is provided through the {{ic|NoExtract}} directive in {{ic|pacman.conf}}, which prevent these files from ever being installed.<br />
<br />
{{Warning|1=Some users noted that removing locales has resulted in [[Special:Permalink/460285#Dangerous NoExtract example|unintended consequences]], even under [https://bbs.archlinux.org/viewtopic.php?id=250846 Xorg].}}<br />
<br />
The example below installs English (US) files, or none at all:<br />
<br />
{{hc|/etc/pacman.conf|2=<br />
NoExtract = usr/share/help/* !usr/share/help/C/*<br />
NoExtract = usr/share/gtk-doc/html/*<br />
NoExtract = usr/share/locale/* usr/share/X11/locale/*/* usr/share/i18n/locales/* opt/google/chrome/locales/* !usr/share/X11/locale/C/*<br />
NoExtract = !*locale*/en*/* !usr/share/*locale*/locale.*<br />
NoExtract = !usr/share/*locales/en_?? !usr/share/*locales/i18n* !usr/share/*locales/iso*<br />
NoExtract = usr/share/i18n/charmaps/* !usr/share/i18n/charmaps/UTF-8.gz<br />
NoExtract = !usr/share/*locales/trans*<br />
NoExtract = usr/share/man/* !usr/share/man/man*<br />
NoExtract = usr/share/vim/vim*/lang/*<br />
NoExtract = usr/lib/libreoffice/help/en-US/*<br />
NoExtract = usr/share/kbd/locale/*<br />
NoExtract = usr/share/*/translations/*.qm usr/share/*/nls/*.qm usr/share/qt/translations/*.pak !*/en-US.pak # Qt apps<br />
NoExtract = usr/share/*/locales/*.pak opt/*/locales/*.pak usr/lib/*/locales/*.pak !*/en-US.pak # Electron apps<br />
NoExtract = opt/onlyoffice/desktopeditors/dictionaries/* !opt/onlyoffice/desktopeditors/dictionaries/en_US/*<br />
NoExtract = opt/onlyoffice/desktopeditors/editors/web-apps/apps/*/main/locale/* !*/en.json<br />
NoExtract = opt/onlyoffice/desktopeditors/editors/web-apps/apps/*/main/resources/help/* !*/help/en/*<br />
NoExtract = opt/onlyoffice/desktopeditors/converter/empty/*/*<br />
NoExtract = usr/share/ibus/dicts/emoji-*.dict !usr/share/ibus/dicts/emoji-en.dict<br />
}}<br />
<br />
== Performance ==<br />
<br />
=== Download speeds ===<br />
<br />
{{Note|If your download speeds have been reduced to a crawl, ensure you are using one of the many [[mirrors]] and not ftp.archlinux.org, which is [https://archlinux.org/news/302/ throttled since March 2007].}}<br />
<br />
When downloading packages ''pacman'' uses the mirrors in the order they are in {{ic|/etc/pacman.d/mirrorlist}}. The mirror which is at the top of the list by default however may not be the fastest for you. To select a faster mirror, see [[Mirrors]].<br />
<br />
Pacman's speed in downloading packages can also be improved by using a different application to download packages, instead of ''pacman''<nowiki/>'s built-in file downloader, or by [[pacman#Enabling parallel downloads|enabling parallel downloads]].<br />
<br />
In all cases, make sure you have the latest ''pacman'' before doing any modifications.<br />
<br />
# pacman -Syu<br />
<br />
==== Powerpill ====<br />
<br />
[[Powerpill]] is a ''pacman'' wrapper that uses parallel and segmented downloading to try to speed up downloads for ''pacman''.<br />
<br />
==== wget ====<br />
<br />
This is also very handy if you need more powerful proxy settings than ''pacman''<nowiki/>'s built-in capabilities. <br />
<br />
To use {{ic|wget}}, first [[install]] the {{Pkg|wget}} package then modify {{ic|/etc/pacman.conf}} by uncommenting the following line in the {{ic|[options]}} section:<br />
<br />
XferCommand = /usr/bin/wget --passive-ftp --show-progress -c -q -N %u<br />
<br />
Instead of uncommenting the {{ic|wget}} parameters in {{ic|/etc/pacman.conf}}, you can also modify the {{ic|wget}} configuration file directly (the system-wide file is {{ic|/etc/wgetrc}}, per user files are {{ic|$HOME/.wgetrc}}).<br />
<br />
==== aria2 ====<br />
<br />
[[aria2]] is a lightweight download utility with support for resumable and segmented HTTP/HTTPS and FTP downloads. aria2 allows for multiple and simultaneous HTTP/HTTPS and FTP connections to an Arch mirror, which should result in an increase in download speeds for both file and package retrieval.<br />
<br />
{{Note|Using aria2c in ''pacman''<nowiki/>'s XferCommand will '''not''' result in parallel downloads of multiple packages. Pacman invokes the XferCommand with a single package at a time and waits for it to complete before invoking the next. To download multiple packages in parallel, see [[Powerpill]].}}<br />
<br />
Install {{Pkg|aria2}}, then edit {{ic|/etc/pacman.conf}} by adding the following line to the {{ic|[options]}} section:<br />
<br />
XferCommand = /usr/bin/aria2c --allow-overwrite=true --continue=true --file-allocation=none --log-level=error --max-tries=2 --max-connection-per-server=2 --max-file-not-found=5 --min-split-size=5M --no-conf --remote-time=true --summary-interval=60 --timeout=5 --dir=/ --out %o %u<br />
<br />
{{Tip|1=[https://bbs.archlinux.org/viewtopic.php?pid=1491879#p1491879 This alternative configuration for using pacman with aria2] tries to simplify configuration and adds more configuration options.}}<br />
<br />
See {{man|1|aria2c|OPTIONS}} for used aria2c options.<br />
<br />
* {{ic|-d, --dir}}: The directory to store the downloaded file(s) as specified by ''pacman''.<br />
* {{ic|-o, --out}}: The output file name(s) of the downloaded file(s). <br />
* {{ic|%o}}: Variable which represents the local filename(s) as specified by ''pacman''.<br />
* {{ic|%u}}: Variable which represents the download URL as specified by ''pacman''.<br />
<br />
==== Other applications ====<br />
<br />
There are other downloading applications that you can use with ''pacman''. Here they are, and their associated XferCommand settings:<br />
<br />
* {{ic|snarf}}: {{ic|1=XferCommand = /usr/bin/snarf -N %u}}<br />
* {{ic|lftp}}: {{ic|1=XferCommand = /usr/bin/lftp -c pget %u}}<br />
* {{ic|axel}}: {{ic|1=XferCommand = /usr/bin/axel -n 2 -v -a -o %o %u}}<br />
* {{ic|hget}}: {{ic|1=XferCommand = /usr/bin/hget %u -n 2 -skip-tls false}} (please read the [https://github.com/huydx/hget documentation on the Github project page] for more info)<br />
* {{ic|saldl}}: {{ic|1=XferCommand = /usr/bin/saldl -c6 -l4 -s2m -o %o %u}} (please read the [https://saldl.github.io documentation on the project page] for more info)<br />
<br />
== Utilities ==<br />
<br />
* {{App|Lostfiles|Script that identifies files not owned by any package.|https://github.com/graysky2/lostfiles|{{Pkg|lostfiles}}}}<br />
* {{App|Pacmatic|Pacman wrapper to check Arch News before upgrading, avoid partial upgrades, and warn about configuration file changes.|http://kmkeen.com/pacmatic|{{Pkg|pacmatic}}}}<br />
* {{App|pacutils|Helper library for libalpm based programs.|https://github.com/andrewgregory/pacutils|{{Pkg|pacutils}}}}<br />
* {{App|[[pkgfile]]|Tool that finds what package owns a file.|https://github.com/falconindy/pkgfile|{{Pkg|pkgfile}}}}<br />
* {{App|pkgtools|Collection of scripts for Arch Linux packages.|https://github.com/Daenyth/pkgtools|{{AUR|pkgtools}}}}<br />
* {{App|pkgtop|Interactive package manager and resource monitor designed for the GNU/Linux.|https://github.com/orhun/pkgtop|{{AUR|pkgtop-git}}}}<br />
* {{App|[[Powerpill]]|Uses parallel and segmented downloading through [[aria2]] and [[Reflector]] to try to speed up downloads for ''pacman''.|https://xyne.archlinux.ca/projects/powerpill/|{{AUR|powerpill}}}}<br />
* {{App|repoctl|Tool to help manage local repositories.|https://github.com/cassava/repoctl|{{AUR|repoctl}}}}<br />
* {{App|repose|An Arch Linux repository building tool.|https://github.com/vodik/repose|{{Pkg|repose}}}}<br />
* {{App|[[Snapper#Wrapping_pacman_transactions_in_snapshots|snap-pac]]|Make ''pacman'' automatically use snapper to create pre/post snapshots like openSUSE's YaST.|https://github.com/wesbarnett/snap-pac|{{Pkg|snap-pac}}}}<br />
* {{App|vrms-arch|A virtual Richard M. Stallman to tell you which non-free packages are installed.|https://github.com/orospakr/vrms-arch|{{AUR|vrms-arch-git}}}}<br />
<br />
=== Graphical ===<br />
<br />
{{Warning|PackageKit opens up system permissions by default, and is otherwise not recommended for general usage. See {{Bug|50459}} and {{Bug|57943}}.}}<br />
<br />
* {{App|Apper|Qt 5 application and package manager using PackageKit written in C++. Supports [https://www.freedesktop.org/wiki/Distributions/AppStream/ AppStream metadata].|https://userbase.kde.org/Apper|{{Pkg|apper}}}}<br />
* {{App|Deepin App Store|Third party app store for DDE built with DTK, using PackageKit. Supports [https://www.freedesktop.org/wiki/Distributions/AppStream/ AppStream metadata].|https://github.com/dekzi/dde-store|{{Pkg|deepin-store}}}}<br />
* {{App|Discover|Qt 5 application manager using PackageKit written in C++/QML. Supports [https://www.freedesktop.org/wiki/Distributions/AppStream/ AppStream metadata], [[Flatpak]] and [[fwupd|firmware updates]]. |https://userbase.kde.org/Discover|{{Pkg|discover}}}}<br />
* {{App|GNOME PackageKit|GTK 3 package manager using PackageKit written in C.|https://freedesktop.org/software/PackageKit/|{{Pkg|gnome-packagekit}}}}<br />
* {{App|GNOME Software|GTK 3 application manager using PackageKit written in C. Supports [https://www.freedesktop.org/wiki/Distributions/AppStream/ AppStream metadata], [[Flatpak]] and [[fwupd|firmware updates]]. |https://wiki.gnome.org/Apps/Software|{{Pkg|gnome-software}}}}<br />
* {{App|pcurses|Curses TUI ''pacman'' wrapper written in C++.|https://github.com/schuay/pcurses|{{Pkg|pcurses}}}}<br />
* {{App|tkPacman|Tk pacman wrapper written in Tcl.|https://sourceforge.net/projects/tkpacman|{{AUR|tkpacman}}}}</div>Hashworkshttps://wiki.archlinux.org/index.php?title=Pulseeffects&diff=653771Pulseeffects2021-03-01T16:35:11Z<p>Hashworks: Change redirect to the pipewire page since one needs to repace pulseaudio with it</p>
<hr />
<div>#REDIRECT [[PipeWire#PulseEffects]]</div>Hashworkshttps://wiki.archlinux.org/index.php?title=PipeWire&diff=653770PipeWire2021-03-01T16:31:39Z<p>Hashworks: Adjust note about gst-plugin-pipewire and pipewire-pulse since those are now dependencies</p>
<hr />
<div>[[Category:Multimedia]]<br />
[[fi:PipeWire]]<br />
[[ja:PipeWire]]<br />
{{Related articles start}}<br />
{{Related|PipeWire/Examples}}<br />
{{Related articles end}}<br />
<br />
[http://pipewire.org PipeWire] is a new multimedia framework by GNOME. The main developer is Wim Taymans.<br />
<br />
PipeWire supports containers like [[Flatpak]] and does not rely on [[user group]]s ''audio'' and ''video'', but rather uses a [[Polkit]]-like security model asking Flatpak or Wayland for permission to record screen or audio.<br />
<br />
== Installation ==<br />
<br />
[[Install]] the {{pkg|pipewire}} package from the official repositories.<br />
<br />
Pipewire uses [[Systemd/User]] for management of the server and automatic socket activation. See the respective [[Systemd/User]] for more details on the startup behavior and logging of the service.<br />
<br />
Optionally, install {{pkg|pipewire-docs}} to review the documentation. Other packages, such as {{pkg|pipewire-alsa}}, {{pkg|pipewire-pulse}}, and {{pkg|pipewire-jack}} are normally not needed unless one wants to [[#Audio|use PipeWire as a PulseAudio/JACK replacement]]. Also available are {{aur|lib32-pipewire}}, {{aur|lib32-pipewire-pulse-git}}{{Broken package link|package not found}}, and {{aur|lib32-pipewire-jack}} for multilib support.<br />
<br />
== Usage ==<br />
<br />
=== WebRTC screen sharing ===<br />
<br />
Most browsers used to rely on X11 for capturing the desktop (or individual applications) when using WebRTC (e.g. on Google Hangouts). On Wayland, the sharing mechanism is handled differently for security reasons. PipeWire enables sharing content under Wayland with fine-grained access controls.<br />
<br />
This requires {{Pkg|xdg-desktop-portal}} and one of its backends [http://jgrulich.cz/2018/07/04/how-to-enable-and-use-screen-sharing-on-wayland to be installed]. The available backends are:<br />
<br />
* {{Pkg|xdg-desktop-portal-gtk}} for GNOME.<br />
* {{Pkg|xdg-desktop-portal-kde}} for KDE.<br />
* {{Pkg|xdg-desktop-portal-wlr}} for wlroots-based compositor (e.g. [[Sway]], [https://github.com/djpohly/dwl dwl])<br />
<br />
Firefox (84+) supports this method by default, while on Chromium (73+) one needs to enable [https://bugs.chromium.org/p/chromium/issues/detail?id=682122 WebRTC PipeWire support] by setting the corresponding (experimental) flag at the following URL<br />
chrome://flags/#enable-webrtc-pipewire-capturer<br />
<br />
For {{ic|xdg-desktop-portal-wlr}} to work you need to set {{ic|XDG_CURRENT_DESKTOP}}[https://github.com/emersion/xdg-desktop-portal-wlr#running]:<br />
export XDG_CURRENT_DESKTOP=sway<br />
<br />
Note, since Chromium is currently using PipeWire 0.2 whereas Arch ships PipeWire 0.3, you also need to install {{Pkg|libpipewire02}} for screen sharing to work.<br />
<br />
{{Tip|To share an individual monitor with {{ic|xdg-desktop-portal-wlr}} if you have more than one, you can add the {{ic|1=--output=''Monitor''}} flag to it by [[Systemd#Editing_provided_units|editing]] the {{ic|1=ExecStart=}} option in the unit's service file. The complete line could look like {{ic|1=ExecStart=@libexecdir@/xdg-desktop-portal-wlr --output=eDP-1}}}}<br />
<br />
{{Accuracy|Since [https://github.com/flatpak/xdg-desktop-portal-gtk/pull/225 this pull request] was merged, the following note about specific app/window sharing may be not correct anymore for {{Pkg|xdg-desktop-portal-gtk}}. Also see the ticket tracking the discussion at [https://github.com/flatpak/xdg-desktop-portal-gtk/issues/204].}}<br />
<br />
Note that the only supported feature is sharing the entire desktop and not a specific app/window [https://github.com/emersion/xdg-desktop-portal-wlr/wiki/FAQ#will-this-let-me-share-individual-windows][https://github.com/KDE/xdg-desktop-portal-kde/blob/master/TODO].<br />
<br />
=== Video ===<br />
<br />
Although the software is not yet production-ready, it is safe to play around with. Most applications that rely on [[GStreamer]] to handle e.g. video streams should work out-of-the-box thanks to the PipeWire GStreamer plugin. Applications like e.g. {{pkg|cheese}} are therefore already able to share video input using it.<br />
<br />
=== Audio ===<br />
<br />
PipeWire can be used as an audio server, similar to PulseAudio and JACK. It aims to replace both PulseAudio and JACK, by providing a PulseAudio-compatible server implementation and ABI-compatible libraries for JACK clients. See [https://blogs.gnome.org/uraeus/2020/09/04/pipewire-late-summer-update-2020/ this blog entry] for more information.<br />
<br />
==== ALSA/Legacy applications ====<br />
<br />
Install {{pkg|pipewire-alsa}} to route all application using the ALSA API through PipeWire.<br />
<br />
==== PulseAudio clients ====<br />
<br />
Install {{pkg|pipewire-pulse}}. Normally, no further action is needed, as the user service {{ic|pipewire-pulse.socket}} should be enabled automatically by the package. If PipeWire does not work correctly on system startup, validate that the user services {{ic|pipewire-pulse.service}} and {{ic|pipewire.service}} are up and running. See [[Systemd/User]].<br />
<br />
Reboot or re-login to see the effect.<br />
<br />
To check if the replacement is working, run the following command and see the output:<br />
<br />
{{hc|1=$ pactl info|2=<br />
...<br />
Server Name: PulseAudio (on PipeWire 0.3.16)<br />
...<br />
}}<br />
<br />
==== JACK clients ====<br />
<br />
Install {{pkg|pipewire-jack}} and use {{ic|pw-jack}} to launch JACK clients with the compatible libraries instead of the original {{ic|libjack*}}:<br />
<br />
pw-jack ''application''<br />
<br />
It's also possible to request a custom buffer size by setting a quotient of buffersize/samplerate (which equals the block latency in seconds):<br />
<br />
PIPEWIRE_LATENCY="128/48000" pw-jack ''application''<br />
<br />
Alternatively, install {{aur|pipewire-jack-dropin}} or uninstall {{pkg|jack}}/{{pkg|jack2}} to let JACK clients load the compatible libraries automatically.<br />
<br />
Use {{ic|ldd}} to verify that the JACK application links to the correct library:<br />
<br />
{{hc|1=$ ldd /usr/bin/qjackctl {{!}} grep -i libjack|2=<br />
libjack.so.0 => /usr/lib/pipewire-0.3/jack/libjack.so.0 (0x00007f7e5080a000)<br />
}}<br />
<br />
==== Bluetooth devices ====<br />
<br />
PipeWire handles Bluetooth audio devices if the {{pkg|pipewire-pulse}} package is installed. More specifically, the media session daemon checks for {{ic|/etc/pipewire/media-session.d/with-pulseaudio}}, and enables its {{ic|bluez5}} module automatically if the file exists.<br />
<br />
==== Run PipeWire on top of native JACK ====<br />
<br />
PipeWire can also run as a JACK client on top of the native JACK daemon if desired. See [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/JACK JACK and PipeWire] for more information.<br />
<br />
== Audio post-processing ==<br />
<br />
=== PulseEffects ===<br />
<br />
PulseEffects is a GTK utility which provides a large array of audio effects and filters to individual application output streams and microphone input streams. Notable effects include an input/output equalizer, output loudness equalization and bass enhancement, and input de-esser and noise reduction plug-in. See [https://github.com/wwmm/pulseeffects the GitHub page] for a full list of effects.<br />
<br />
In order to use PulseEffects with PipeWire, install {{Pkg|pulseeffects}} or {{AUR|pulseeffects-git}}.<br />
<br />
{{Note|This will also install {{Pkg|pipewire-pulse}} and [[#PulseAudio clients|replace PulseAudio with PipeWire]]. See {{Bug|69437}} for details. For the legacy version see [[PulseAudio#PulseEffects]].}}<br />
<br />
See [https://github.com/wwmm/pulseeffects/wiki/Community-presets Community Presets] for a collection of preset configurations.<br />
<br />
== Troubleshooting ==<br />
<br />
=== Microphone is not detected by PipeWire ===<br />
<br />
PipeWire's {{ic|alsa-monitor}} module uses {{pkg|alsa-card-profiles}} to detect devices by default. If this isn't working for you, try to turn off {{ic|api.alsa.use-acp}}, or optionally turn on {{ic|api.alsa.use-ucm}} in {{ic|/etc/pipewire/media-session.d/alsa-monitor.conf}}, under {{ic|rules}} -> the first rule -> {{ic|actions}} -> {{ic|update-props}}:<br />
<br />
...<br />
update-props = {<br />
api.alsa.use-acp = false<br />
...<br />
<br />
Then, restart pipewire and check available devices:<br />
<br />
{{hc|1=<br />
$ pw-record --list-targets<br />
|2=<br />
Available targets ("*" denotes default): 62<br />
58: description="Built-in Audio" prio=1872<br />
60: description="Built-in Audio" prio=2000<br />
* 62: description="Built-in Audio (Loopback PCM)" prio=1984<br />
}}<br />
<br />
=== No sound after connecting to Bluetooth device ===<br />
<br />
As of 2020-12-07, if there is no sound after connecting a Bluetooth device, you might need to switch the default sink and/or move a sink input to the correct sink. Use {{ic|pactl list sinks}} to list the available sinks and {{ic|pactl set-default-sink}} to switch the default sink to the Bluetooth device. This can be automated via [[udev]] using a script similar to [https://gist.github.com/tinywrkb/04e7fd644afa9b92d33a3a99ab07ee9e this one].<br />
<br />
See this [https://www.reddit.com/r/archlinux/comments/jydd02/pipewirepulse_03164_in_testing_now_replaces/gd3m7fu/?context=3 Reddit thread] for a discussion of the issue. According to author of the script, the headset profile (HSP) might still have problems.<br />
<br />
=== Low volume ===<br />
<br />
After replacing PulseAudio with Pipewire, sound worked fine, but after a reboot, the volume was intolerably low.<br />
<br />
Open {{ic|alsamixer}}, use {{ic|F6}} to select the proper soundcard, and make sure the ALSA volumes are at 100%. {{ic|alsactl}} should maintain this setting after reboot.<br />
<br />
=== Increasing RLIMIT_MEMLOCK ===<br />
<br />
Dec 13 11:11:11 HOST pipewire-pulse[99999]: Failed to mlock memory 0x7f4f659d8000 32832: This is not a problem but for best performance, consider increasing RLIMIT_MEMLOCK<br />
<br />
Install {{pkg|realtime-privileges}} and add your own user to the {{ic|realtime}} group.<br />
<br />
Alternatively, increasing memlock from 64kB to 128kB seems enough to fix this. If you are running {{ic|pipewire-pulse}} under [[systemd/User]], add:<br />
<br />
username soft memlock 64<br />
username hard memlock 128<br />
<br />
to {{ic|/etc/security/limits.d/username.conf}}<br />
<br />
=== External sound card not activated after reconnect ===<br />
<br />
Check {{ic|~/.config/pipewire-media-session/default-profile}} if there is any entry with default profile "off" and remove it. If that does not help, remove all files from {{ic|~/.config/pipewire-media-session/}} and restart PipeWire using {{ic|systemctl --user restart pipewire.service}}.<br />
<br />
=== No Sound or pactl info shows Failure: Connection refused ===<br />
It means applications are unable to connect to the PipeWire-Pulse service, confirm that {{ic|/etc/pipewire/pipewire-pulse.conf}} exists and is not empty and restart PipeWire-Pulse using {{ic|systemctl --user restart pipewire-pulse.service}}.<br />
<br />
If that does not fix it, run {{ic|strace -f -o /tmp/pipe.txt pactl info}} and pastebin {{ic|/tmp/pipe.txt}} while seeking help on IRC (Freenode '''#pipewire''') or the mailing-lists.<br />
<br />
=== Low audio quality on Bluetooth ===<br />
<br />
Feb 17 18:23:01 HOST pipewire[249297]: (bluez_input.18:54:CF:04:00:56.a2dp-sink-60) client too slow! rate:512/48000 pos:370688 status:triggered<br />
<br />
In case Bluetooth playback stutters, check {{ic|pipewire.service}} using {{ic|systemctl --user status pipewire.service}}. If there are errors like this one, check the currently selected codec using {{ic|pactl list sinks}} and try changing it by setting {{ic|bluez5.codec}} to one of {{ic|sbc aac ldac aptx aptx_hd}} in {{ic|/etc/pipewire/media-session.d/bluez-monitor.conf}} and restart PipeWire using {{ic|systemctl --user restart pipewire.service}} for the changes to take effect.<br />
<br />
{{hc|head=/etc/pipewire/media-session.d/bluez-monitor.conf|output=<br />
...<br />
properties = {<br />
...<br />
bluez5.codec = sbc<br />
...}}<br />
<br />
=== No devices detected after PipeWire update and reboot (git / >=0.3.23) ===<br />
<br />
As of commit 012a68f8[https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/012a68f8ef33705f1a40ec8ac294b8cce7f6aa88] new systemd service has been added and it's disabled by default which means there's no {{ic|pipewire-media-session}} running on the system reboot. To enable service run: {{ic|systemctl --user enable --now pipewire-media-session.service}}<br />
<br />
If user or package manager haven't sorted out configuration files changes after update then another instance of {{ic|pipewire-media-session}} might be running in pipewire.service, to check run: {{ic|systemctl --user status pipewire.service}}<br />
<br />
If it shows pipewire and pipewire-media-session running thus update your system and/or user configuration:<br />
<br />
{{hc|head=/etc/pipewire/pipewire.conf and/or ~/.config/pipewire/pipewire.conf|output=<br />
context.exec = {<br />
...<br />
# Line below should be commented out<br />
#"/usr/bin/pipewire-media-session" = { args = "" }<br />
...<br />
}<br />
}}<br />
<br />
== See also ==<br />
<br />
* [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/home Wiki] — PipeWire Wiki on Freedesktop GitLab<br />
* [https://blogs.gnome.org/uraeus/2018/01/26/an-update-on-pipewire-the-multimedia-revolution-an-update/ Pipewire Update Blog Post] — Blog post from January 2018 outlining the state of PipeWire at the time<br />
* [https://blogs.gnome.org/uraeus/2020/09/04/pipewire-late-summer-update-2020/ PipeWire Late Summer Update 2020] — Blog post from September 2020</div>Hashworkshttps://wiki.archlinux.org/index.php?title=Banana_Pi&diff=646116Banana Pi2020-12-20T18:03:00Z<p>Hashworks: Add link to firmware-raspberrypi package</p>
<hr />
<div>[[Category:ARM architecture]]<br />
[[ja:Banana Pi]]<br />
The Banana Pi was originally an open-source single-board computer capable of running multiple forms of Linux, Android and even prebuilt Raspberry Pi images. It is now the name of a small series of boards made available by the Banana Pi open source project. More info about their project and product line is available at [http://www.banana-pi.org/ their website].<br />
<br />
The Banana Pi M1, M2 (most variants included), and M3 are all minimalist computers built for the [[Wikipedia:ARMv7-A|ARMv7-A architecture]]. With their [[Wikipedia:Allwinner Technology|Allwinner]] SoCs, these Banana Pi boards usually run the well documented Sunxi Linux kernel, so for any hardware or kernel related tasks you should [https://linux-sunxi.org/Main_Page take a look at the Sunxi Wiki.]<br />
<br />
{{Note|The device is not officially supported by the ALARM project, i.e. please refrain from submitting patches, feature requests or bug reports for it.}}<br />
<br />
== Article preface ==<br />
This article is strongly based on the [[Wikipedia:Raspberry Pi|Raspberry Pi]]. Moreover this article is not meant to be an exhaustive setup guide and assumes that the reader has setup an Arch system before.<br />
<br />
== Installation ==<br />
This method will install unmodified ArchLinuxARM armv7 base system to your Banana Pi, meaning you'll have the latest mainline kernel from the [https://archlinuxarm.org/ ALARM Project] even thought the Banana Pi series is not officially supported.<br />
<br />
=== Install base system to a SD card ===<br />
Zero the beginning of the SD card replacing {{ic|''sdX''}} with the drive's block device:<br />
<br />
# dd if=/dev/zero of=/dev/''sdX'' bs=1M count=8<br />
<br />
Use [[fdisk]] to partition the SD card with a [[MBR]] partition table, and [[file systems|format]] the root partition, replacing {{ic|''sdX1''}} with the root partition:<br />
<br />
# mkfs.ext4 -O ^metadata_csum,^64bit /dev/''sdX1''<br />
<br />
Mount the [[Ext4]] file system:<br />
<br />
# mkdir mnt<br />
# mount /dev/''sdX1'' mnt<br />
<br />
Download ArchLinuxARM with {{Pkg|wget}}:<br />
<br />
# wget http://archlinuxarm.org/os/ArchLinuxARM-armv7-latest.tar.gz<br />
<br />
Extract the root file system:<br />
<br />
# bsdtar -xpf ArchLinuxARM-armv7-latest.tar.gz -C mnt/<br />
<br />
Create a file with the following boot script<br />
{{hc|boot.cmd|<nowiki><br />
part uuid ${devtype} ${devnum}:${bootpart} uuid<br />
setenv bootargs console=${console} root=PARTUUID=${uuid} rw rootwait<br />
<br />
if load ${devtype} ${devnum}:${bootpart} ${kernel_addr_r} /boot/zImage; then<br />
if load ${devtype} ${devnum}:${bootpart} ${fdt_addr_r} /boot/dtbs/${fdtfile}; then<br />
if load ${devtype} ${devnum}:${bootpart} ${ramdisk_addr_r} /boot/initramfs-linux.img; then<br />
bootz ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr_r};<br />
else<br />
bootz ${kernel_addr_r} - ${fdt_addr_r};<br />
fi;<br />
fi;<br />
fi<br />
<br />
if load ${devtype} ${devnum}:${bootpart} 0x48000000 /boot/uImage; then<br />
if load ${devtype} ${devnum}:${bootpart} 0x43000000 /boot/script.bin; then<br />
setenv bootm_boot_mode sec;<br />
bootm 0x48000000;<br />
fi;<br />
fi</nowiki>}}<br />
<br />
Compile it and write it to the SD-card using the package {{Pkg|uboot-tools}}.<br />
<br />
# mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "BananPI boot script" -d boot.cmd mnt/boot/boot.scr<br />
# umount mnt<br />
<br />
=== Compile and copy U-Boot boot loader ===<br />
The next step is creating a u-boot image. Make sure you have {{Pkg|arm-none-eabi-gcc}}, {{Pkg|dtc}}, {{Pkg|git}}, {{Pkg|swig}} and {{Pkg|uboot-tools}} installed on your system. Then clone the u-boot source code and compile an image, making sure to replace ''defconfig'' with the config of your specific board:<br />
<br />
{| class="wikitable"<br />
|+ Config List<br />
! Board !! Defconfig<br />
|-<br />
|| M1 || {{ic|Bananapi_defconfig}}<br />
|-<br />
|| M1+ || {{ic|bananapi_m1_plus_defconfig}}<br />
|-<br />
|| M2 || {{ic|Sinovoip_BPI_M2_defconfig}}<br />
|-<br />
|| M2 Berry || {{ic|bananapi_m2_berry_defconfig}}<br />
|-<br />
|| M2PLUS-H3 || {{ic|bananapi_m2_plus_h3_defconfig}}<br />
|-<br />
|| M2PLUS-H5 || {{ic|bananapi_m2_plus_h5_defconfig}}<br />
|-<br />
|| M2 Ultra || {{ic|Bananapi_M2_Ultra_defconfig}}<br />
|-<br />
|| M2 Magic || {{ic|Bananapi_m2m_defconfig}}<br />
|-<br />
|| M2 Zero || {{ic|bananapi_m2_zero_defconfig}}<br />
|-<br />
|| M3 || {{ic|Sinovoip_BPI_M3_defconfig}}<br />
|-<br />
|| R1 || {{ic|Lamobo_R1_defconfig}}<br />
|-<br />
|}<br />
<br />
{{Note|The M2 Ultra and Magic boards have device tree files available. They, and other defconfigs, can be found at the [https://gitlab.denx.de/u-boot/u-boot/ U-Boot GitLab].}}<br />
<br />
$ git clone git://git.denx.de/u-boot.git<br />
$ cd u-boot<br />
$ make -j4 ARCH=arm CROSS_COMPILE=arm-none-eabi- ''defconfig''<br />
$ make -j4 ARCH=arm CROSS_COMPILE=arm-none-eabi-<br />
<br />
In case the following error shows up during the compilation:<br />
<br />
Traceback (most recent call last):<br />
File "./tools/binman/binman", line 31, in <module><br />
import control<br />
File "/u00/thomas/Downloads/bananapi/u-boot/tools/binman/control.py", line 15, in <module><br />
import fdt<br />
File "/u00/thomas/Downloads/bananapi/u-boot/tools/binman/../dtoc/fdt.py", line 13, in <module><br />
import libfdt<br />
File "tools/libfdt.py", line 17, in <module><br />
_libfdt = swig_import_helper()<br />
File "tools/libfdt.py", line 16, in swig_import_helper<br />
return importlib.import_module('_libfdt')<br />
File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module<br />
__import__(name)<br />
ImportError: No module named _libfdt<br />
make: *** [Makefile:1149: u-boot-sunxi-with-spl.bin] Fehler 1<br />
<br />
Make sure the python2 interpreter is used. To force that you could use for example:<br />
<br />
$ virtualenv -p /usr/bin/python2.7 my_uboot<br />
$ source my_uboot/bin/activate<br />
<br />
Then compile again as above.<br />
<br />
If everything went fine you should have an U-Boot image: u-boot-sunxi-with-spl.bin. Now dd the image to your SD Card, where ``/dev/sdX`` is your SD Card.<br />
<br />
# dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1024 seek=8<br />
<br />
=== Login / SSH ===<br />
SSH login for root is disabled by default. Login with the default user account and use [[su]].<br />
<br />
{| class="wikitable"<br />
! Type<br />
! Username<br />
! Password<br />
|-<br />
|Root<br />
|{{ic|root}}<br />
|{{ic|root}}<br />
|-<br />
|User<br />
|{{ic|alarm}}<br />
|{{ic|alarm}}<br />
|}<br />
<br />
== X.org driver ==<br />
The X.org driver for Banana Pi can be installed with the {{Pkg|xf86-video-fbdev}} package.<br />
<br />
== Troubleshooting ==<br />
=== AP6212 WiFi/Bluetooth Chip ===<br />
Devices like the M2 Zero provide a chip for WiFi and Bluetooth, which needs brcm 43430 firmware. {{ic|dmesg}} will show that as:<br />
<br />
brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43430-sdio.sinovoip,bpi-m2-zero.txt failed with error -2<br />
<br />
The Arch Linux ARM repository provides those with the [https://archlinuxarm.org/packages/any/firmware-raspberrypi {{ic|firmware-raspberrypi}}] package.<br />
<br />
=== Ethernet not working ===<br />
In some cases, the Gbit ethernet connection is unstable or not working properly. It might help to limit the link speed to 100 Mbps using {{Pkg|ethtool}}:<br />
<br />
ethtool -s eth0 speed 100 duplex half autoneg off<br />
<br />
=== Display turns off after idle and does not turn on again ===<br />
If you also have an issue with the display turning off after some idle time and not turning on again, you might want to disable [[DPMS]]. Therefore add these X11 arguments to the proper configuration of your display manager.<br />
<br />
-s 0 -dpms<br />
<br />
For example, if you use [[SLiM]], you would modify in your {{ic|/etc/slim.conf}}:<br />
xserver_arguments -nolisten tcp vt07 -s 0 -dpms <br />
<br />
If for some reason the display still keeps turning off, e.g. when restarting your receiving device, you can turn it on again, by temporary change the resolution:<br />
# echo "D:1280x720p-60" > /sys/class/graphics/fb0/mode<br />
# echo "D:1920x1080p-60" > /sys/class/graphics/fb0/mode<br />
<br />
== See also ==<br />
* [http://forum.banana-pi.org/ Banana-Pi Forum]<br />
* [https://wiki.banana-pi.org/Main_Page Banana-Pi Wiki]<br />
* [https://legacy.gitbook.com/@bananapi/ Banana-Pi GitBook]</div>Hashworkshttps://wiki.archlinux.org/index.php?title=Banana_Pi&diff=646115Banana Pi2020-12-20T18:00:24Z<p>Hashworks: Add firmware information about the AP6212 chip</p>
<hr />
<div>[[Category:ARM architecture]]<br />
[[ja:Banana Pi]]<br />
The Banana Pi was originally an open-source single-board computer capable of running multiple forms of Linux, Android and even prebuilt Raspberry Pi images. It is now the name of a small series of boards made available by the Banana Pi open source project. More info about their project and product line is available at [http://www.banana-pi.org/ their website].<br />
<br />
The Banana Pi M1, M2 (most variants included), and M3 are all minimalist computers built for the [[Wikipedia:ARMv7-A|ARMv7-A architecture]]. With their [[Wikipedia:Allwinner Technology|Allwinner]] SoCs, these Banana Pi boards usually run the well documented Sunxi Linux kernel, so for any hardware or kernel related tasks you should [https://linux-sunxi.org/Main_Page take a look at the Sunxi Wiki.]<br />
<br />
{{Note|The device is not officially supported by the ALARM project, i.e. please refrain from submitting patches, feature requests or bug reports for it.}}<br />
<br />
== Article preface ==<br />
This article is strongly based on the [[Wikipedia:Raspberry Pi|Raspberry Pi]]. Moreover this article is not meant to be an exhaustive setup guide and assumes that the reader has setup an Arch system before.<br />
<br />
== Installation ==<br />
This method will install unmodified ArchLinuxARM armv7 base system to your Banana Pi, meaning you'll have the latest mainline kernel from the [https://archlinuxarm.org/ ALARM Project] even thought the Banana Pi series is not officially supported.<br />
<br />
=== Install base system to a SD card ===<br />
Zero the beginning of the SD card replacing {{ic|''sdX''}} with the drive's block device:<br />
<br />
# dd if=/dev/zero of=/dev/''sdX'' bs=1M count=8<br />
<br />
Use [[fdisk]] to partition the SD card with a [[MBR]] partition table, and [[file systems|format]] the root partition, replacing {{ic|''sdX1''}} with the root partition:<br />
<br />
# mkfs.ext4 -O ^metadata_csum,^64bit /dev/''sdX1''<br />
<br />
Mount the [[Ext4]] file system:<br />
<br />
# mkdir mnt<br />
# mount /dev/''sdX1'' mnt<br />
<br />
Download ArchLinuxARM with {{Pkg|wget}}:<br />
<br />
# wget http://archlinuxarm.org/os/ArchLinuxARM-armv7-latest.tar.gz<br />
<br />
Extract the root file system:<br />
<br />
# bsdtar -xpf ArchLinuxARM-armv7-latest.tar.gz -C mnt/<br />
<br />
Create a file with the following boot script<br />
{{hc|boot.cmd|<nowiki><br />
part uuid ${devtype} ${devnum}:${bootpart} uuid<br />
setenv bootargs console=${console} root=PARTUUID=${uuid} rw rootwait<br />
<br />
if load ${devtype} ${devnum}:${bootpart} ${kernel_addr_r} /boot/zImage; then<br />
if load ${devtype} ${devnum}:${bootpart} ${fdt_addr_r} /boot/dtbs/${fdtfile}; then<br />
if load ${devtype} ${devnum}:${bootpart} ${ramdisk_addr_r} /boot/initramfs-linux.img; then<br />
bootz ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr_r};<br />
else<br />
bootz ${kernel_addr_r} - ${fdt_addr_r};<br />
fi;<br />
fi;<br />
fi<br />
<br />
if load ${devtype} ${devnum}:${bootpart} 0x48000000 /boot/uImage; then<br />
if load ${devtype} ${devnum}:${bootpart} 0x43000000 /boot/script.bin; then<br />
setenv bootm_boot_mode sec;<br />
bootm 0x48000000;<br />
fi;<br />
fi</nowiki>}}<br />
<br />
Compile it and write it to the SD-card using the package {{Pkg|uboot-tools}}.<br />
<br />
# mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "BananPI boot script" -d boot.cmd mnt/boot/boot.scr<br />
# umount mnt<br />
<br />
=== Compile and copy U-Boot boot loader ===<br />
The next step is creating a u-boot image. Make sure you have {{Pkg|arm-none-eabi-gcc}}, {{Pkg|dtc}}, {{Pkg|git}}, {{Pkg|swig}} and {{Pkg|uboot-tools}} installed on your system. Then clone the u-boot source code and compile an image, making sure to replace ''defconfig'' with the config of your specific board:<br />
<br />
{| class="wikitable"<br />
|+ Config List<br />
! Board !! Defconfig<br />
|-<br />
|| M1 || {{ic|Bananapi_defconfig}}<br />
|-<br />
|| M1+ || {{ic|bananapi_m1_plus_defconfig}}<br />
|-<br />
|| M2 || {{ic|Sinovoip_BPI_M2_defconfig}}<br />
|-<br />
|| M2 Berry || {{ic|bananapi_m2_berry_defconfig}}<br />
|-<br />
|| M2PLUS-H3 || {{ic|bananapi_m2_plus_h3_defconfig}}<br />
|-<br />
|| M2PLUS-H5 || {{ic|bananapi_m2_plus_h5_defconfig}}<br />
|-<br />
|| M2 Ultra || {{ic|Bananapi_M2_Ultra_defconfig}}<br />
|-<br />
|| M2 Magic || {{ic|Bananapi_m2m_defconfig}}<br />
|-<br />
|| M2 Zero || {{ic|bananapi_m2_zero_defconfig}}<br />
|-<br />
|| M3 || {{ic|Sinovoip_BPI_M3_defconfig}}<br />
|-<br />
|| R1 || {{ic|Lamobo_R1_defconfig}}<br />
|-<br />
|}<br />
<br />
{{Note|The M2 Ultra and Magic boards have device tree files available. They, and other defconfigs, can be found at the [https://gitlab.denx.de/u-boot/u-boot/ U-Boot GitLab].}}<br />
<br />
$ git clone git://git.denx.de/u-boot.git<br />
$ cd u-boot<br />
$ make -j4 ARCH=arm CROSS_COMPILE=arm-none-eabi- ''defconfig''<br />
$ make -j4 ARCH=arm CROSS_COMPILE=arm-none-eabi-<br />
<br />
In case the following error shows up during the compilation:<br />
<br />
Traceback (most recent call last):<br />
File "./tools/binman/binman", line 31, in <module><br />
import control<br />
File "/u00/thomas/Downloads/bananapi/u-boot/tools/binman/control.py", line 15, in <module><br />
import fdt<br />
File "/u00/thomas/Downloads/bananapi/u-boot/tools/binman/../dtoc/fdt.py", line 13, in <module><br />
import libfdt<br />
File "tools/libfdt.py", line 17, in <module><br />
_libfdt = swig_import_helper()<br />
File "tools/libfdt.py", line 16, in swig_import_helper<br />
return importlib.import_module('_libfdt')<br />
File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module<br />
__import__(name)<br />
ImportError: No module named _libfdt<br />
make: *** [Makefile:1149: u-boot-sunxi-with-spl.bin] Fehler 1<br />
<br />
Make sure the python2 interpreter is used. To force that you could use for example:<br />
<br />
$ virtualenv -p /usr/bin/python2.7 my_uboot<br />
$ source my_uboot/bin/activate<br />
<br />
Then compile again as above.<br />
<br />
If everything went fine you should have an U-Boot image: u-boot-sunxi-with-spl.bin. Now dd the image to your SD Card, where ``/dev/sdX`` is your SD Card.<br />
<br />
# dd if=u-boot-sunxi-with-spl.bin of=/dev/sdX bs=1024 seek=8<br />
<br />
=== Login / SSH ===<br />
SSH login for root is disabled by default. Login with the default user account and use [[su]].<br />
<br />
{| class="wikitable"<br />
! Type<br />
! Username<br />
! Password<br />
|-<br />
|Root<br />
|{{ic|root}}<br />
|{{ic|root}}<br />
|-<br />
|User<br />
|{{ic|alarm}}<br />
|{{ic|alarm}}<br />
|}<br />
<br />
== X.org driver ==<br />
The X.org driver for Banana Pi can be installed with the {{Pkg|xf86-video-fbdev}} package.<br />
<br />
== Troubleshooting ==<br />
=== AP6212 WiFi/Bluetooth Chip ===<br />
Devices like the M2 Zero provide a chip for WiFi and Bluetooth, which needs brcm 43430 firmware. {{ic|dmesg}} will show that as:<br />
<br />
brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43430-sdio.sinovoip,bpi-m2-zero.txt failed with error -2<br />
<br />
The Arch Linux ARM repository provides those with the {{ic|firmware-raspberrypi}} package.<br />
<br />
=== Ethernet not working ===<br />
In some cases, the Gbit ethernet connection is unstable or not working properly. It might help to limit the link speed to 100 Mbps using {{Pkg|ethtool}}:<br />
<br />
ethtool -s eth0 speed 100 duplex half autoneg off<br />
<br />
=== Display turns off after idle and does not turn on again ===<br />
If you also have an issue with the display turning off after some idle time and not turning on again, you might want to disable [[DPMS]]. Therefore add these X11 arguments to the proper configuration of your display manager.<br />
<br />
-s 0 -dpms<br />
<br />
For example, if you use [[SLiM]], you would modify in your {{ic|/etc/slim.conf}}:<br />
xserver_arguments -nolisten tcp vt07 -s 0 -dpms <br />
<br />
If for some reason the display still keeps turning off, e.g. when restarting your receiving device, you can turn it on again, by temporary change the resolution:<br />
# echo "D:1280x720p-60" > /sys/class/graphics/fb0/mode<br />
# echo "D:1920x1080p-60" > /sys/class/graphics/fb0/mode<br />
<br />
== See also ==<br />
* [http://forum.banana-pi.org/ Banana-Pi Forum]<br />
* [https://wiki.banana-pi.org/Main_Page Banana-Pi Wiki]<br />
* [https://legacy.gitbook.com/@bananapi/ Banana-Pi GitBook]</div>Hashworkshttps://wiki.archlinux.org/index.php?title=Package_Maintainers&diff=641040Package Maintainers2020-11-09T13:25:07Z<p>Hashworks: Fix bastelfreak link text</p>
<hr />
<div>[[Category:Arch development]]<br />
[[Category:Teams]]<br />
[[es:Trusted Users]]<br />
[[fr:TU]]<br />
[[ja:Trusted Users]]<br />
[[pt:Trusted Users]]<br />
[[zh-hans:Trusted Users]]<br />
The [https://www.archlinux.org/people/trusted-users/ Trusted Users] serve the following purposes:<br />
# Maintain the ''community'' repository as an intermediary between Arch Linux's [[official repositories]] and the unsupported package collection in the [[AUR]].<br />
# Maintain, manage, and watch over the operation of the [[AUR]].<br />
<br />
== How do I become a TU? ==<br />
The ''minimum'' requirements to becoming a TU are as follows:<br />
* know basic shell scripting<br />
* maintain a few packages in AUR with clean, high-quality PKGBUILDs<br />
* basic community involvement (mailing list, forums, IRC)<br />
* know Google-Fu<br />
* a general idea of the kind of packages you want to maintain (basically, why do you want to become TU?)<br />
<br />
Even though you could become a TU by merely fulfilling those minimum requirements, the people judging you during the [https://aur.archlinux.org/trusted-user/TUbylaws.html#_standard_voting_procedure standard voting procedure] might expect more from you. Such as:<br />
* involvement in the bug tracker (reporting, research, info)<br />
* patches for Arch projects<br />
* involvement in a few open-source projects (even if they are your own)<br />
<br />
If you still feel up to becoming a TU after reading these lines, the first step is to find two TUs who agree to sponsor you. Once sponsored, you should write a witty application signed with your GPG key to the aur-general mailing list.<br />
<br />
{{Note|Should a TU you contact decline to sponsor your application, you should make this fact known if you seek sponsorship from another TU.}}<br />
<br />
For more information, see the [https://aur.archlinux.org/trusted-user/TUbylaws.html Trusted User Bylaws], [[Trusted Users Bylaw Amendment]] and [[AUR Trusted User Guidelines]].<br />
<br />
== Active Trusted Users ==<br />
{| class="wikitable"<br />
! Nick<br />
! Name<br />
! E-Mail<br />
|-<br />
|[https://aur.archlinux.org/packages/?K=ainola&SeB=m ainola]||Brett Cornwall||oergg@v--o.pbz (rot13)<br />
|-<br />
|[https://aur.archlinux.org/packages/?K=Alad&SeB=m alad]||[[User:Alad|Alad Wenter]]||alad@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=alucryd&SeB=m alucryd]||Maxime Gauduin||alucryd@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=anatolik&SeB=m anatolik]||Anatol Pomozov||anatol dot pomozov + arch at gmail<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=andrewSC&SeB=m andrewSC]||Andrew Crerar||andrew (at) crerar (dot) io<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=anthraxx&SeB=m anthraxx]||[[User:anthraxx|Levente Polyak]]||anthraxx [at] archlinux [dot] org<br />
|-<br />
|[https://aur.archlinux.org/packages/?SeB=m&K=arcanis arcanis]||Evgeniy Alekseev||arcanis DOT arch AT gmail DOT com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=ArchangeGabriel&SeB=m ArchangeGabriel]||Bruno Pagani||archange@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages/?SeB=m&K=arojas arojas]||Antonio Rojas||arojas@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages/?SeB=m&K=bastelfreak bastelfreak]||Tim Meusel||bastelfreak@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=BlackIkeEagle&SeB=m BlackIkeEagle]||[[User:BlackEagle|Ike Devolder]]||ike DOT devolder AT gmail DOT com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=City-busz&SeB=m City-busz]||[[User:City-busz|Balló György]]||ballogyor+arch at gmail dot com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=coderobe&SeB=m coderobe]||Robin Broda||ebova ng oebqn qbg zr (rot13)<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=ConnorBehan&SeB=m ConnorBehan]||Connor Behan||connor.behan@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=lfleischer&SeB=m lfleischer]||Lukas Fleischer||lfleischer at archlinux dot org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=eworm&SeB=m eworm]||Christian Hesse||mail@eworm.de<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=daurnimator&SeB=m daurnimator]||Daurnimator||quae at daurnimator com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=dbermond&SeB=m dbermond]||Daniel Bermond||gmail-com: danielbermond<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=demize&SeB=m demize]||[[User:Kyrias|Johannes Löthberg]]||johannes@kyriasis.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=diabonas&SeB=m diabonas]||Jonas Witschel||diabonas@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Dragonlord&SeB=m Dragonlord]||[[User:Drag0nl0rd|Jaroslav Lichtblau]]||svetlemodry @ archlinux org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=dvzrv&SeB=m dvzrv]||[[User:Davezerave|David Runge]]|| dave@sleepmap.de<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=eschwartz&SeB=m eschwartz]||Eli Schwartz|| eschwartz@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=escondida&SeB=m escondida]||Ivy Foster||code @ escondida dot tk<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=farseerfc&SeB=m farseerfc]||Jiachen Yang||farseerfc[at]gmail[dot]com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=felixonmars&SeB=m felixonmars]||Felix Yan||felixonmars@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=FFY00&SeB=m FFY00]||Filipe Laíns||[mailto:lains@archlinux.org lains@archlinux.org]<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Foxboron&SeB=m Foxboron]||Morten Linderud||foxboron@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=foxxx0&SeB=m foxxx0]||Thore Bödecker||me [at] foxxx0 [dot] de<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=freswa&SeB=m freswa]||Frederik Schwan||freswa at archlinux dot org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=giniu&SeB=m giniu]||[[User:giniu|Andrzej Giniewicz]]||gginiu@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=heftig&SeB=m heftig]||Jan Alexander Steffens||jan.steffens@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=hashworks&SeB=m hashworks]||Justin Kromlinger||hashworks@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=jelly&SeB=m jelly]||Jelle van der Waa|| jelle vdwaa nl<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=jleclanche&SeB=m jleclanche]||[[User:jleclanche|Jerome Leclanche]]||jerome''@''leclan''.''ch<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=jsteel&SeB=m jsteel]||Jonathan Steel||jsteel at aur.archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=kgizdov&SeB=m kgizdov]||Konstantin Gizdov||arch@kge.pw<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=kpcyrd&SeB=m kpcyrd]||kpcyrd||git@rxv.cc<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=keenerd&SeB=m keenerd]||Kyle Keen||keenerd@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=lordheavy&SeB=m Lordheavy]||[[User:Lordheavy|Laurent Carlier]]||lordheavym at gmail com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=maximbaz&SeB=m maximbaz]||Maxim Baz||archlinux at maximbaz dot com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=mtorromeo&SeB=m mtorromeo]||Massimiliano Torromeo||massimiliano.torromeo@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Muflone&SeB=m Muflone]||Fabio Castelli||muflone (at) archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=NicoHood&SeB=m NicoHood]||NicoHood||archlinux (cat) nicohood (dog) de<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=polyzen&SeB=m polyzen]||Daniel M. Capella||polyzen@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=raster&SeB=m raster]||Carsten Haitzler||raster@rasterman.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=sangy&SeB=m sangy]||Santiago Torres-Arias|| santiago @ archlinux ⇶ org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=schuay&SeB=m schuay]||Jakob Gruber||jakob.gruber@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=seblu&SeB=m seblu]||Sébastien Luttringer||s е b l u ''at'' a r c h l і n ux ''dot'' o r g<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=sergej&SeB=m sergej]||[[User:Sergej|Sergej Pupykin]]||pupykin.s+arch@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=shibumi&SeB=m shibumi]||[[User:shibumi|Christian Rebischke]]||Chris.Rebischke [at] archlinux [dot] org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=stativ&SeB=m stativ]||Lukas Jirkovsky||l.jirkovsky strange_curved_character gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=svenstaro&SeB=m svenstaro]||[[User:svenstaro|Sven-Hendrik Haase]]||sven@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=tensor5&SeB=m tensor5]||Nicola Squartini||tensor5@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=wild&SeB=m wild]||[[User:vild|Dan Printzell]]||[mailto:arch@vild.io arch@vild.io]<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Xyne&SeB=m Xyne]||Xyne||ca . archlinux @ xyne, in reverse order<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=xyproto&SeB=m xyproto]||Alexander F. Rødseth||xyproto@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=yan12125&SeB=m yan12125]||[[User:Yan12125|Chih-Hsuan Yen]]||yan12125@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=zorun&SeB=m zorun]||Baptiste Jonglez||archlinux bitsofnetworks org<br />
|}<br />
<br />
== Inactive Trusted Users ==<br />
{| class="wikitable"<br />
! Nick<br />
! Name<br />
! E-Mail<br />
! Comments/Reference<br />
|-<br />
|}<br />
<br />
== Some Past Trusted Users ==<br />
{| class="wikitable"<br />
! Nick<br />
! Name<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=abhidg&SeB=m abhidg]||Abhishek Dasgupta<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Allan&SeB=m Allan]||Allan McRae<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Ambrevar&SeB=m Ambrevar]||[[User:Ambrevar|Pierre Neidhardt]]<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=anders&SeB=m anders]||Anders Bergh<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=angvp&SeB=m angvp]||[[User:Angvp|Angel Velásquez]]<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Atsutane&SeB=m Atsutane]||Thorsten Töpper<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=bardo&SeB=m bardo]||Corrado Primier<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Barthalion&SeB=m Barthalion]||Bartłomiej Piotrowski<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=ndr&SeB=m ndr]||Andrea Scarpino<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=bfinch&SeB=m bfinch]||Bob Finch<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=bluewind&SeB=m Bluewind]||Florian Pritz<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=brain0&SeB=m brain0]||Thomas Bächler<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=bjorn&SeB=m bjorn]||[[User:Bjørn|Bjørn Lindeijer]]<br />
|- <br />
|[https://aur.archlinux.org/packages/?K=Cinelli&SeB=m cinelli] ||Federico Cinelli<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=codemac&SeB=m codemac]||Jeff Mickey<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=cmb&SeB=m cmb]||Chris Brannon<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Daenyth&SeB=m Daenyth]||Daenyth Blank<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=DaNiMoTh&SeB=m DaNiMoTh]||JJ. DaNiMoTh<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=dejari&SeB=m dejari]||Leslie P. Polzer<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=dsa&SeB=m dsa]||Douglas Soares de Andrade<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=dtw&SeB=m dtw]||Phil Dillon-Thiselton<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=elasticdog&SeB=m elasticdog]||Aaron Bull Schaefer<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=encelo&SeB=m encelo]||Angelo Theodorou<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=even&SeB=m even] ||Kessia Pinheiro<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=faidoc&SeB=m Faidoc]||Alexandre Filgueira<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=falconindy&SeB=m falconindy]||Dave Reisner<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=foutrelis&SeB=m foutrelis]||Evangelos Foutras<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=filoktetes&SeB=m filoktetes]||Robert Emil Berge<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=firmicus&SeB=m firmicus]||François Charette<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=flexiondotorg&SeB=m flexiondotorg]||Martin Wimpress<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=ganja_guru&SeB=m ganja_guru]||Varun Acharya<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=gcarrier&SeB=m gcarrier]||Geoffroy Carrier<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Ghost1227&SeB=m Ghost1227]||Dan Griffiths<br />
|-<br />
|[https://aur.archlinux.org/packages/?SeB=m&K=grazzolini grazzolini]||Giancarlo Razzolini<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=gtmanfred&SeB=m gtmanfred]||Daniel Wallace<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=gummibaerchen&SeB=m gummibaerchen]||Timm Preetz<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=hdoria&SeB=m hdoria]||Hugo Doria<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=iphitus&SeB=m iphitus]||James Rayner<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=itsbrad212&SeB=m itsbrad212]||Brad Fanella<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=kaitocracy&SeB=m kaitocracy]||Kaiting Chen<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=louipc&SeB=m louipc]||Loui Chang<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=mOLOk&SeB=m mOLOk]||Alessio Bolognino<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=nesl247&SeB=m nesl247]||Alex Heck<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Neverth&SeB=m Neverth]||Mikko Seppälä<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Partition&SeB=m Partition]||Mateusz Herych<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=petelewis&SeB=m petelewis]||Peter Lewis<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=PirateJonno&SeB=m PirateJonno]||Jonathan Conder<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=phrakture&SeB=m phrakture]||Aaron Griffin<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Pierre&SeB=m Pierre]||Pierre Schmitz<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=pizzapunk&SeB=m pizzapunk]||Alexander Fehr<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=pjmattal&SeB=m pjmattal]||Paul Mattal<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=pressh&SeB=m pressh]||Ronald van Haren<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Ranguvar&SeB=m Ranguvar]||Devin Cofer<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Romashka&SeB=m Romashka]||Roman Kyrylych<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=schivmeister&SeB=m schivmeister]||[[User:Schivmeister|Ray Rashif]]<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=shastry&SeB=m shastry]||Vinay S Shastry<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Snowman&SeB=m Snowman]||Eric Bélanger<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=shinlun&SeB=m shinlun]||Shinlun Hsieh<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=speps&SeB=m speps]||SpepS<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=StefanHusmann&SeB=m StefanHusmann]||Stefan Husmann<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=STiAT&SeB=m STiAT]||Georg Grabler<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=swiergot&SeB=m swiergot]||Jaroslaw Swierczynski<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=tardo&SeB=m tardo]||Shehzad Qureshi<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=td123&SeB=m td123]||Thomas Dziedzic<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=thatch45&SeB=m thatch45]||Thomas S Hatch<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=thotypous&SeB=m thotypous]||Paulo Matias<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=tredaelli&SeB=m tredaelli]||Timothy Redaelli<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=vegai&SeB=m vegai]||Vesa Kaihlavirta<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=voidnull&SeB=m voidnull]||Giovanni Scafora<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=wizzomafizzo&SeB=m wizzomafizzo]||Callan Barrett<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=wonder&SeB=m wonder]|| Ionut Biru<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Xilon&SeB=m Xilon]||Sebastian Nowicki<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=xterminus&SeB=m xterminus]||Charles Mauch<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=zeus&SeB=m zeus]||Zhukov Pavel<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Dicebot&SeB=m Dicebot]||Mihails Strasuns<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=thestinger&SeB=m thestinger]||Daniel Micay<br />
|}</div>Hashworkshttps://wiki.archlinux.org/index.php?title=Package_Maintainers&diff=641039Package Maintainers2020-11-09T13:24:07Z<p>Hashworks: Add bastelfreak as TU</p>
<hr />
<div>[[Category:Arch development]]<br />
[[Category:Teams]]<br />
[[es:Trusted Users]]<br />
[[fr:TU]]<br />
[[ja:Trusted Users]]<br />
[[pt:Trusted Users]]<br />
[[zh-hans:Trusted Users]]<br />
The [https://www.archlinux.org/people/trusted-users/ Trusted Users] serve the following purposes:<br />
# Maintain the ''community'' repository as an intermediary between Arch Linux's [[official repositories]] and the unsupported package collection in the [[AUR]].<br />
# Maintain, manage, and watch over the operation of the [[AUR]].<br />
<br />
== How do I become a TU? ==<br />
The ''minimum'' requirements to becoming a TU are as follows:<br />
* know basic shell scripting<br />
* maintain a few packages in AUR with clean, high-quality PKGBUILDs<br />
* basic community involvement (mailing list, forums, IRC)<br />
* know Google-Fu<br />
* a general idea of the kind of packages you want to maintain (basically, why do you want to become TU?)<br />
<br />
Even though you could become a TU by merely fulfilling those minimum requirements, the people judging you during the [https://aur.archlinux.org/trusted-user/TUbylaws.html#_standard_voting_procedure standard voting procedure] might expect more from you. Such as:<br />
* involvement in the bug tracker (reporting, research, info)<br />
* patches for Arch projects<br />
* involvement in a few open-source projects (even if they are your own)<br />
<br />
If you still feel up to becoming a TU after reading these lines, the first step is to find two TUs who agree to sponsor you. Once sponsored, you should write a witty application signed with your GPG key to the aur-general mailing list.<br />
<br />
{{Note|Should a TU you contact decline to sponsor your application, you should make this fact known if you seek sponsorship from another TU.}}<br />
<br />
For more information, see the [https://aur.archlinux.org/trusted-user/TUbylaws.html Trusted User Bylaws], [[Trusted Users Bylaw Amendment]] and [[AUR Trusted User Guidelines]].<br />
<br />
== Active Trusted Users ==<br />
{| class="wikitable"<br />
! Nick<br />
! Name<br />
! E-Mail<br />
|-<br />
|[https://aur.archlinux.org/packages/?K=ainola&SeB=m ainola]||Brett Cornwall||oergg@v--o.pbz (rot13)<br />
|-<br />
|[https://aur.archlinux.org/packages/?K=Alad&SeB=m alad]||[[User:Alad|Alad Wenter]]||alad@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=alucryd&SeB=m alucryd]||Maxime Gauduin||alucryd@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=anatolik&SeB=m anatolik]||Anatol Pomozov||anatol dot pomozov + arch at gmail<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=andrewSC&SeB=m andrewSC]||Andrew Crerar||andrew (at) crerar (dot) io<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=anthraxx&SeB=m anthraxx]||[[User:anthraxx|Levente Polyak]]||anthraxx [at] archlinux [dot] org<br />
|-<br />
|[https://aur.archlinux.org/packages/?SeB=m&K=arcanis arcanis]||Evgeniy Alekseev||arcanis DOT arch AT gmail DOT com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=ArchangeGabriel&SeB=m ArchangeGabriel]||Bruno Pagani||archange@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages/?SeB=m&K=arojas arojas]||Antonio Rojas||arojas@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages/?SeB=m&K=bastelfreak]||Tim Meusel||bastelfreak@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=BlackIkeEagle&SeB=m BlackIkeEagle]||[[User:BlackEagle|Ike Devolder]]||ike DOT devolder AT gmail DOT com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=City-busz&SeB=m City-busz]||[[User:City-busz|Balló György]]||ballogyor+arch at gmail dot com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=coderobe&SeB=m coderobe]||Robin Broda||ebova ng oebqn qbg zr (rot13)<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=ConnorBehan&SeB=m ConnorBehan]||Connor Behan||connor.behan@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=lfleischer&SeB=m lfleischer]||Lukas Fleischer||lfleischer at archlinux dot org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=eworm&SeB=m eworm]||Christian Hesse||mail@eworm.de<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=daurnimator&SeB=m daurnimator]||Daurnimator||quae at daurnimator com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=dbermond&SeB=m dbermond]||Daniel Bermond||gmail-com: danielbermond<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=demize&SeB=m demize]||[[User:Kyrias|Johannes Löthberg]]||johannes@kyriasis.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=diabonas&SeB=m diabonas]||Jonas Witschel||diabonas@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Dragonlord&SeB=m Dragonlord]||[[User:Drag0nl0rd|Jaroslav Lichtblau]]||svetlemodry @ archlinux org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=dvzrv&SeB=m dvzrv]||[[User:Davezerave|David Runge]]|| dave@sleepmap.de<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=eschwartz&SeB=m eschwartz]||Eli Schwartz|| eschwartz@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=escondida&SeB=m escondida]||Ivy Foster||code @ escondida dot tk<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=farseerfc&SeB=m farseerfc]||Jiachen Yang||farseerfc[at]gmail[dot]com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=felixonmars&SeB=m felixonmars]||Felix Yan||felixonmars@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=FFY00&SeB=m FFY00]||Filipe Laíns||[mailto:lains@archlinux.org lains@archlinux.org]<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Foxboron&SeB=m Foxboron]||Morten Linderud||foxboron@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=foxxx0&SeB=m foxxx0]||Thore Bödecker||me [at] foxxx0 [dot] de<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=freswa&SeB=m freswa]||Frederik Schwan||freswa at archlinux dot org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=giniu&SeB=m giniu]||[[User:giniu|Andrzej Giniewicz]]||gginiu@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=heftig&SeB=m heftig]||Jan Alexander Steffens||jan.steffens@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=hashworks&SeB=m hashworks]||Justin Kromlinger||hashworks@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=jelly&SeB=m jelly]||Jelle van der Waa|| jelle vdwaa nl<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=jleclanche&SeB=m jleclanche]||[[User:jleclanche|Jerome Leclanche]]||jerome''@''leclan''.''ch<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=jsteel&SeB=m jsteel]||Jonathan Steel||jsteel at aur.archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=kgizdov&SeB=m kgizdov]||Konstantin Gizdov||arch@kge.pw<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=kpcyrd&SeB=m kpcyrd]||kpcyrd||git@rxv.cc<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=keenerd&SeB=m keenerd]||Kyle Keen||keenerd@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=lordheavy&SeB=m Lordheavy]||[[User:Lordheavy|Laurent Carlier]]||lordheavym at gmail com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=maximbaz&SeB=m maximbaz]||Maxim Baz||archlinux at maximbaz dot com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=mtorromeo&SeB=m mtorromeo]||Massimiliano Torromeo||massimiliano.torromeo@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Muflone&SeB=m Muflone]||Fabio Castelli||muflone (at) archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=NicoHood&SeB=m NicoHood]||NicoHood||archlinux (cat) nicohood (dog) de<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=polyzen&SeB=m polyzen]||Daniel M. Capella||polyzen@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=raster&SeB=m raster]||Carsten Haitzler||raster@rasterman.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=sangy&SeB=m sangy]||Santiago Torres-Arias|| santiago @ archlinux ⇶ org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=schuay&SeB=m schuay]||Jakob Gruber||jakob.gruber@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=seblu&SeB=m seblu]||Sébastien Luttringer||s е b l u ''at'' a r c h l і n ux ''dot'' o r g<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=sergej&SeB=m sergej]||[[User:Sergej|Sergej Pupykin]]||pupykin.s+arch@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=shibumi&SeB=m shibumi]||[[User:shibumi|Christian Rebischke]]||Chris.Rebischke [at] archlinux [dot] org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=stativ&SeB=m stativ]||Lukas Jirkovsky||l.jirkovsky strange_curved_character gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=svenstaro&SeB=m svenstaro]||[[User:svenstaro|Sven-Hendrik Haase]]||sven@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=tensor5&SeB=m tensor5]||Nicola Squartini||tensor5@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=wild&SeB=m wild]||[[User:vild|Dan Printzell]]||[mailto:arch@vild.io arch@vild.io]<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Xyne&SeB=m Xyne]||Xyne||ca . archlinux @ xyne, in reverse order<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=xyproto&SeB=m xyproto]||Alexander F. Rødseth||xyproto@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=yan12125&SeB=m yan12125]||[[User:Yan12125|Chih-Hsuan Yen]]||yan12125@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=zorun&SeB=m zorun]||Baptiste Jonglez||archlinux bitsofnetworks org<br />
|}<br />
<br />
== Inactive Trusted Users ==<br />
{| class="wikitable"<br />
! Nick<br />
! Name<br />
! E-Mail<br />
! Comments/Reference<br />
|-<br />
|}<br />
<br />
== Some Past Trusted Users ==<br />
{| class="wikitable"<br />
! Nick<br />
! Name<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=abhidg&SeB=m abhidg]||Abhishek Dasgupta<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Allan&SeB=m Allan]||Allan McRae<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Ambrevar&SeB=m Ambrevar]||[[User:Ambrevar|Pierre Neidhardt]]<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=anders&SeB=m anders]||Anders Bergh<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=angvp&SeB=m angvp]||[[User:Angvp|Angel Velásquez]]<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Atsutane&SeB=m Atsutane]||Thorsten Töpper<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=bardo&SeB=m bardo]||Corrado Primier<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Barthalion&SeB=m Barthalion]||Bartłomiej Piotrowski<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=ndr&SeB=m ndr]||Andrea Scarpino<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=bfinch&SeB=m bfinch]||Bob Finch<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=bluewind&SeB=m Bluewind]||Florian Pritz<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=brain0&SeB=m brain0]||Thomas Bächler<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=bjorn&SeB=m bjorn]||[[User:Bjørn|Bjørn Lindeijer]]<br />
|- <br />
|[https://aur.archlinux.org/packages/?K=Cinelli&SeB=m cinelli] ||Federico Cinelli<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=codemac&SeB=m codemac]||Jeff Mickey<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=cmb&SeB=m cmb]||Chris Brannon<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Daenyth&SeB=m Daenyth]||Daenyth Blank<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=DaNiMoTh&SeB=m DaNiMoTh]||JJ. DaNiMoTh<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=dejari&SeB=m dejari]||Leslie P. Polzer<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=dsa&SeB=m dsa]||Douglas Soares de Andrade<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=dtw&SeB=m dtw]||Phil Dillon-Thiselton<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=elasticdog&SeB=m elasticdog]||Aaron Bull Schaefer<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=encelo&SeB=m encelo]||Angelo Theodorou<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=even&SeB=m even] ||Kessia Pinheiro<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=faidoc&SeB=m Faidoc]||Alexandre Filgueira<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=falconindy&SeB=m falconindy]||Dave Reisner<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=foutrelis&SeB=m foutrelis]||Evangelos Foutras<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=filoktetes&SeB=m filoktetes]||Robert Emil Berge<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=firmicus&SeB=m firmicus]||François Charette<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=flexiondotorg&SeB=m flexiondotorg]||Martin Wimpress<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=ganja_guru&SeB=m ganja_guru]||Varun Acharya<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=gcarrier&SeB=m gcarrier]||Geoffroy Carrier<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Ghost1227&SeB=m Ghost1227]||Dan Griffiths<br />
|-<br />
|[https://aur.archlinux.org/packages/?SeB=m&K=grazzolini grazzolini]||Giancarlo Razzolini<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=gtmanfred&SeB=m gtmanfred]||Daniel Wallace<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=gummibaerchen&SeB=m gummibaerchen]||Timm Preetz<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=hdoria&SeB=m hdoria]||Hugo Doria<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=iphitus&SeB=m iphitus]||James Rayner<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=itsbrad212&SeB=m itsbrad212]||Brad Fanella<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=kaitocracy&SeB=m kaitocracy]||Kaiting Chen<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=louipc&SeB=m louipc]||Loui Chang<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=mOLOk&SeB=m mOLOk]||Alessio Bolognino<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=nesl247&SeB=m nesl247]||Alex Heck<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Neverth&SeB=m Neverth]||Mikko Seppälä<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Partition&SeB=m Partition]||Mateusz Herych<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=petelewis&SeB=m petelewis]||Peter Lewis<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=PirateJonno&SeB=m PirateJonno]||Jonathan Conder<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=phrakture&SeB=m phrakture]||Aaron Griffin<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Pierre&SeB=m Pierre]||Pierre Schmitz<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=pizzapunk&SeB=m pizzapunk]||Alexander Fehr<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=pjmattal&SeB=m pjmattal]||Paul Mattal<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=pressh&SeB=m pressh]||Ronald van Haren<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Ranguvar&SeB=m Ranguvar]||Devin Cofer<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Romashka&SeB=m Romashka]||Roman Kyrylych<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=schivmeister&SeB=m schivmeister]||[[User:Schivmeister|Ray Rashif]]<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=shastry&SeB=m shastry]||Vinay S Shastry<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Snowman&SeB=m Snowman]||Eric Bélanger<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=shinlun&SeB=m shinlun]||Shinlun Hsieh<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=speps&SeB=m speps]||SpepS<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=StefanHusmann&SeB=m StefanHusmann]||Stefan Husmann<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=STiAT&SeB=m STiAT]||Georg Grabler<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=swiergot&SeB=m swiergot]||Jaroslaw Swierczynski<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=tardo&SeB=m tardo]||Shehzad Qureshi<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=td123&SeB=m td123]||Thomas Dziedzic<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=thatch45&SeB=m thatch45]||Thomas S Hatch<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=thotypous&SeB=m thotypous]||Paulo Matias<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=tredaelli&SeB=m tredaelli]||Timothy Redaelli<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=vegai&SeB=m vegai]||Vesa Kaihlavirta<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=voidnull&SeB=m voidnull]||Giovanni Scafora<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=wizzomafizzo&SeB=m wizzomafizzo]||Callan Barrett<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=wonder&SeB=m wonder]|| Ionut Biru<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Xilon&SeB=m Xilon]||Sebastian Nowicki<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=xterminus&SeB=m xterminus]||Charles Mauch<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=zeus&SeB=m zeus]||Zhukov Pavel<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Dicebot&SeB=m Dicebot]||Mihails Strasuns<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=thestinger&SeB=m thestinger]||Daniel Micay<br />
|}</div>Hashworkshttps://wiki.archlinux.org/index.php?title=Package_Maintainers&diff=624814Package Maintainers2020-07-11T16:53:46Z<p>Hashworks: /* Updated my mail address */</p>
<hr />
<div>[[Category:Arch development]]<br />
[[Category:Teams]]<br />
[[es:Trusted Users]]<br />
[[fr:TU]]<br />
[[ja:Trusted Users]]<br />
[[pt:Trusted Users]]<br />
[[zh-hans:Trusted Users]]<br />
The [https://www.archlinux.org/people/trusted-users/ Trusted Users] serve the following purposes:<br />
# Maintain the ''community'' repository as an intermediary between Arch Linux's [[official repositories]] and the unsupported package collection in the [[AUR]].<br />
# Maintain, manage, and watch over the operation of the [[AUR]].<br />
<br />
== How do I become a TU? ==<br />
The ''minimum'' requirements to becoming a TU are as follows:<br />
* know basic shell scripting<br />
* maintain a few packages in AUR with clean, high-quality PKGBUILDs<br />
* basic community involvement (mailing list, forums, IRC)<br />
* know Google-Fu<br />
* a general idea of the kind of packages you want to maintain (basically, why do you want to become TU?)<br />
<br />
Even though you could become a TU by merely fulfilling those minimum requirements, the people judging you during the [https://aur.archlinux.org/trusted-user/TUbylaws.html#_standard_voting_procedure standard voting procedure] might expect more from you. Such as:<br />
* involvement in the bug tracker (reporting, research, info)<br />
* patches for Arch projects<br />
* involvement in a few open-source projects (even if they are your own)<br />
<br />
If you still feel up to becoming a TU after reading these lines, the first step is to find two TUs who agree to sponsor you. Once sponsored, you should write a witty application signed with your GPG key to the aur-general mailing list.<br />
<br />
{{Note|Should a TU you contact decline to sponsor your application, you should make this fact known if you seek sponsorship from another TU.}}<br />
<br />
For more information, see the [https://aur.archlinux.org/trusted-user/TUbylaws.html Trusted User Bylaws], [[Trusted Users Bylaw Amendment]] and [[AUR Trusted User Guidelines]].<br />
<br />
== Active Trusted Users ==<br />
{| class="wikitable"<br />
! Nick<br />
! Name<br />
! E-Mail<br />
|-<br />
|[https://aur.archlinux.org/packages/?K=ainola&SeB=m ainola]||Brett Cornwall||oergg@v--o.pbz (rot13)<br />
|-<br />
|[https://aur.archlinux.org/packages/?K=Alad&SeB=m alad]||[[User:Alad|Alad Wenter]]||alad@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=alucryd&SeB=m alucryd]||Maxime Gauduin||alucryd@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=anatolik&SeB=m anatolik]||Anatol Pomozov||anatol dot pomozov + arch at gmail<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=andrewSC&SeB=m andrewSC]||Andrew Crerar||andrew (at) crerar (dot) io<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=anthraxx&SeB=m anthraxx]||[[User:anthraxx|Levente Polyak]]||anthraxx [at] archlinux [dot] org<br />
|-<br />
|[https://aur.archlinux.org/packages/?SeB=m&K=arcanis arcanis]||Evgeniy Alekseev||arcanis DOT arch AT gmail DOT com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=ArchangeGabriel&SeB=m ArchangeGabriel]||Bruno Pagani||archange@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages/?SeB=m&K=arojas arojas]||Antonio Rojas||arojas@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Barthalion&SeB=m Barthalion]||Bartłomiej Piotrowski||spam@bpiotrowski.pl<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=BlackIkeEagle&SeB=m BlackIkeEagle]||[[User:BlackEagle|Ike Devolder]]||ike DOT devolder AT gmail DOT com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=bluewind&SeB=m Bluewind]||Florian Pritz|| bluewind@xinu.at<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=City-busz&SeB=m City-busz]||[[User:City-busz|Balló György]]||ballogyor+arch at gmail dot com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=coderobe&SeB=m coderobe]||Robin Broda||ebova ng oebqn qbg zr (rot13)<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=ConnorBehan&SeB=m ConnorBehan]||Connor Behan||connor.behan@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=lfleischer&SeB=m lfleischer]||Lukas Fleischer||lfleischer at archlinux dot org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=eworm&SeB=m eworm]||Christian Hesse||mail@eworm.de<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=daurnimator&SeB=m daurnimator]||Daurnimator||quae at daurnimator com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=dbermond&SeB=m dbermond]||Daniel Bermond||gmail-com: danielbermond<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=demize&SeB=m demize]||[[User:Kyrias|Johannes Löthberg]]||johannes@kyriasis.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=diabonas&SeB=m diabonas]||Jonas Witschel||diabonas@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Dragonlord&SeB=m Dragonlord]||[[User:Drag0nl0rd|Jaroslav Lichtblau]]||svetlemodry @ archlinux org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=dvzrv&SeB=m dvzrv]||[[User:Davezerave|David Runge]]|| dave@sleepmap.de<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=eschwartz&SeB=m eschwartz]||Eli Schwartz|| eschwartz@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=escondida&SeB=m escondida]||Ivy Foster||code @ escondida dot tk<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=farseerfc&SeB=m farseerfc]||Jiachen Yang||farseerfc[at]gmail[dot]com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=felixonmars&SeB=m felixonmars]||Felix Yan||felixonmars@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=FFY00&SeB=m FFY00]||Filipe Laíns||[mailto:lains@archlinux.org lains@archlinux.org]<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Foxboron&SeB=m Foxboron]||Morten Linderud||foxboron@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=foxxx0&SeB=m foxxx0]||Thore Bödecker||me [at] foxxx0 [dot] de<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=freswa&SeB=m freswa]||Frederik Schwan||freswa at archlinux dot org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=giniu&SeB=m giniu]||[[User:giniu|Andrzej Giniewicz]]||gginiu@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages/?SeB=m&K=grazzolini grazzolini]||Giancarlo Razzolini||grazzolini [at] gmail [dot] com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=heftig&SeB=m heftig]||Jan Alexander Steffens||jan.steffens@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=hashworks&SeB=m hashworks]||Justin Kromlinger||hashworks@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=jelly&SeB=m jelly]||Jelle van der Waa|| jelle vdwaa nl<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=jleclanche&SeB=m jleclanche]||[[User:jleclanche|Jerome Leclanche]]||jerome''@''leclan''.''ch<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=jsteel&SeB=m jsteel]||Jonathan Steel||jsteel at aur.archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=kgizdov&SeB=m kgizdov]||Konstantin Gizdov||arch@kge.pw<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=kpcyrd&SeB=m kpcyrd]||kpcyrd||git@rxv.cc<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=keenerd&SeB=m keenerd]||Kyle Keen||keenerd@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=lordheavy&SeB=m Lordheavy]||[[User:Lordheavy|Laurent Carlier]]||lordheavym at gmail com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=maximbaz&SeB=m maximbaz]||Maxim Baz||archlinux at maximbaz dot com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=mtorromeo&SeB=m mtorromeo]||Massimiliano Torromeo||massimiliano.torromeo@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Muflone&SeB=m Muflone]||Fabio Castelli||muflone (at) archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=NicoHood&SeB=m NicoHood]||NicoHood||archlinux (cat) nicohood (dog) de<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=polyzen&SeB=m polyzen]||Daniel M. Capella||polyzen@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=sangy&SeB=m sangy]||Santiago Torres-Arias|| santiago @ archlinux ⇶ org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=schuay&SeB=m schuay]||Jakob Gruber||jakob.gruber@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=seblu&SeB=m seblu]||Sébastien Luttringer||s е b l u ''at'' a r c h l і n ux ''dot'' o r g<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=sergej&SeB=m sergej]||[[User:Sergej|Sergej Pupykin]]||pupykin.s+arch@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=shibumi&SeB=m shibumi]||[[User:shibumi|Christian Rebischke]]||Chris.Rebischke [at] archlinux [dot] org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=stativ&SeB=m stativ]||Lukas Jirkovsky||l.jirkovsky strange_curved_character gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=svenstaro&SeB=m svenstaro]||[[User:svenstaro|Sven-Hendrik Haase]]||sven@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=tensor5&SeB=m tensor5]||Nicola Squartini||tensor5@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=wild&SeB=m wild]||[[User:vild|Dan Printzell]]||[mailto:arch@vild.io arch@vild.io]<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Xyne&SeB=m Xyne]||Xyne||ca . archlinux @ xyne, in reverse order<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=xyproto&SeB=m xyproto]||Alexander F. Rødseth||xyproto@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=yan12125&SeB=m yan12125]||[[User:Yan12125|Chih-Hsuan Yen]]||yan12125@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=zorun&SeB=m zorun]||Baptiste Jonglez||archlinux bitsofnetworks org<br />
|}<br />
<br />
== Inactive Trusted Users ==<br />
{| class="wikitable"<br />
! Nick<br />
! Name<br />
! E-Mail<br />
! Comments/Reference<br />
|-<br />
|}<br />
<br />
== Some Past Trusted Users ==<br />
{| class="wikitable"<br />
! Nick<br />
! Name<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=abhidg&SeB=m abhidg]||Abhishek Dasgupta<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Allan&SeB=m Allan]||Allan McRae<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Ambrevar&SeB=m Ambrevar]||[[User:Ambrevar|Pierre Neidhardt]]<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=anders&SeB=m anders]||Anders Bergh<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=angvp&SeB=m angvp]||[[User:Angvp|Angel Velásquez]]<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Atsutane&SeB=m Atsutane]||Thorsten Töpper<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=bardo&SeB=m bardo]||Corrado Primier<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=ndr&SeB=m ndr]||Andrea Scarpino<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=bfinch&SeB=m bfinch]||Bob Finch<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=brain0&SeB=m brain0]||Thomas Bächler<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=bjorn&SeB=m bjorn]||[[User:Bjørn|Bjørn Lindeijer]]<br />
|- <br />
|[https://aur.archlinux.org/packages/?K=Cinelli&SeB=m cinelli] ||Federico Cinelli<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=codemac&SeB=m codemac]||Jeff Mickey<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=cmb&SeB=m cmb]||Chris Brannon<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Daenyth&SeB=m Daenyth]||Daenyth Blank<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=DaNiMoTh&SeB=m DaNiMoTh]||JJ. DaNiMoTh<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=dejari&SeB=m dejari]||Leslie P. Polzer<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=dsa&SeB=m dsa]||Douglas Soares de Andrade<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=dtw&SeB=m dtw]||Phil Dillon-Thiselton<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=elasticdog&SeB=m elasticdog]||Aaron Bull Schaefer<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=encelo&SeB=m encelo]||Angelo Theodorou<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=even&SeB=m even] ||Kessia Pinheiro<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=faidoc&SeB=m Faidoc]||Alexandre Filgueira<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=falconindy&SeB=m falconindy]||Dave Reisner<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=foutrelis&SeB=m foutrelis]||Evangelos Foutras<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=filoktetes&SeB=m filoktetes]||Robert Emil Berge<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=firmicus&SeB=m firmicus]||François Charette<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=flexiondotorg&SeB=m flexiondotorg]||Martin Wimpress<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=ganja_guru&SeB=m ganja_guru]||Varun Acharya<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=gcarrier&SeB=m gcarrier]||Geoffroy Carrier<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Ghost1227&SeB=m Ghost1227]||Dan Griffiths<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=gtmanfred&SeB=m gtmanfred]||Daniel Wallace<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=gummibaerchen&SeB=m gummibaerchen]||Timm Preetz<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=hdoria&SeB=m hdoria]||Hugo Doria<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=iphitus&SeB=m iphitus]||James Rayner<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=itsbrad212&SeB=m itsbrad212]||Brad Fanella<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=kaitocracy&SeB=m kaitocracy]||Kaiting Chen<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=louipc&SeB=m louipc]||Loui Chang<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=mOLOk&SeB=m mOLOk]||Alessio Bolognino<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=nesl247&SeB=m nesl247]||Alex Heck<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Neverth&SeB=m Neverth]||Mikko Seppälä<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Partition&SeB=m Partition]||Mateusz Herych<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=petelewis&SeB=m petelewis]||Peter Lewis<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=PirateJonno&SeB=m PirateJonno]||Jonathan Conder<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=phrakture&SeB=m phrakture]||Aaron Griffin<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Pierre&SeB=m Pierre]||Pierre Schmitz<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=pizzapunk&SeB=m pizzapunk]||Alexander Fehr<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=pjmattal&SeB=m pjmattal]||Paul Mattal<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=pressh&SeB=m pressh]||Ronald van Haren<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Ranguvar&SeB=m Ranguvar]||Devin Cofer<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Romashka&SeB=m Romashka]||Roman Kyrylych<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=schivmeister&SeB=m schivmeister]||[[User:Schivmeister|Ray Rashif]]<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=shastry&SeB=m shastry]||Vinay S Shastry<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Snowman&SeB=m Snowman]||Eric Bélanger<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=shinlun&SeB=m shinlun]||Shinlun Hsieh<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=speps&SeB=m speps]||SpepS<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=StefanHusmann&SeB=m StefanHusmann]||Stefan Husmann<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=STiAT&SeB=m STiAT]||Georg Grabler<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=swiergot&SeB=m swiergot]||Jaroslaw Swierczynski<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=tardo&SeB=m tardo]||Shehzad Qureshi<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=td123&SeB=m td123]||Thomas Dziedzic<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=thatch45&SeB=m thatch45]||Thomas S Hatch<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=thotypous&SeB=m thotypous]||Paulo Matias<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=tredaelli&SeB=m tredaelli]||Timothy Redaelli<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=vegai&SeB=m vegai]||Vesa Kaihlavirta<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=voidnull&SeB=m voidnull]||Giovanni Scafora<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=wizzomafizzo&SeB=m wizzomafizzo]||Callan Barrett<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=wonder&SeB=m wonder]|| Ionut Biru<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Xilon&SeB=m Xilon]||Sebastian Nowicki<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=xterminus&SeB=m xterminus]||Charles Mauch<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=zeus&SeB=m zeus]||Zhukov Pavel<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Dicebot&SeB=m Dicebot]||Mihails Strasuns<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=thestinger&SeB=m thestinger]||Daniel Micay<br />
|}</div>Hashworkshttps://wiki.archlinux.org/index.php?title=Package_Maintainers&diff=623394Package Maintainers2020-07-02T12:29:49Z<p>Hashworks: /* Added myself as a TU */</p>
<hr />
<div>[[Category:Arch development]]<br />
[[Category:Teams]]<br />
[[es:Trusted Users]]<br />
[[fr:TU]]<br />
[[ja:Trusted Users]]<br />
[[pt:Trusted Users]]<br />
[[zh-hans:Trusted Users]]<br />
The [https://www.archlinux.org/people/trusted-users/ Trusted Users] serve the following purposes:<br />
# Maintain the ''community'' repository as an intermediary between Arch Linux's [[official repositories]] and the unsupported package collection in the [[AUR]].<br />
# Maintain, manage, and watch over the operation of the [[AUR]].<br />
<br />
== How do I become a TU? ==<br />
The ''minimum'' requirements to becoming a TU are as follows:<br />
* know basic shell scripting<br />
* maintain a few packages in AUR with clean, high-quality PKGBUILDs<br />
* basic community involvement (mailing list, forums, IRC)<br />
* know Google-Fu<br />
* a general idea of the kind of packages you want to maintain (basically, why do you want to become TU?)<br />
<br />
Even though you could become a TU by merely fulfilling those minimum requirements, the people judging you during the [https://aur.archlinux.org/trusted-user/TUbylaws.html#_standard_voting_procedure standard voting procedure] might expect more from you. Such as:<br />
* involvement in the bug tracker (reporting, research, info)<br />
* patches for Arch projects<br />
* involvement in a few open-source projects (even if they are your own)<br />
<br />
If you still feel up to becoming a TU after reading these lines, the first step is to find two TUs who agree to sponsor you. Once sponsored, you should write a witty application signed with your GPG key to the aur-general mailing list.<br />
<br />
{{Note|Should a TU you contact decline to sponsor your application, you should make this fact known if you seek sponsorship from another TU.}}<br />
<br />
For more information, see the [https://aur.archlinux.org/trusted-user/TUbylaws.html Trusted User Bylaws], [[Trusted Users Bylaw Amendment]] and [[AUR Trusted User Guidelines]].<br />
<br />
== Active Trusted Users ==<br />
{| class="wikitable"<br />
! Nick<br />
! Name<br />
! E-Mail<br />
|-<br />
|[https://aur.archlinux.org/packages/?K=ainola&SeB=m ainola]||Brett Cornwall||oergg@v--o.pbz (rot13)<br />
|-<br />
|[https://aur.archlinux.org/packages/?K=Alad&SeB=m alad]||[[User:Alad|Alad Wenter]]||alad@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=alucryd&SeB=m alucryd]||Maxime Gauduin||alucryd@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=anatolik&SeB=m anatolik]||Anatol Pomozov||anatol dot pomozov + arch at gmail<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=andrewSC&SeB=m andrewSC]||Andrew Crerar||andrew (at) crerar (dot) io<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=anthraxx&SeB=m anthraxx]||[[User:anthraxx|Levente Polyak]]||anthraxx [at] archlinux [dot] org<br />
|-<br />
|[https://aur.archlinux.org/packages/?SeB=m&K=arcanis arcanis]||Evgeniy Alekseev||arcanis DOT arch AT gmail DOT com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=ArchangeGabriel&SeB=m ArchangeGabriel]||Bruno Pagani||archange@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages/?SeB=m&K=arojas arojas]||Antonio Rojas||arojas@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Barthalion&SeB=m Barthalion]||Bartłomiej Piotrowski||spam@bpiotrowski.pl<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=BlackIkeEagle&SeB=m BlackIkeEagle]||[[User:BlackEagle|Ike Devolder]]||ike DOT devolder AT gmail DOT com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=bluewind&SeB=m Bluewind]||Florian Pritz|| bluewind@xinu.at<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=City-busz&SeB=m City-busz]||[[User:City-busz|Balló György]]||ballogyor+arch at gmail dot com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=coderobe&SeB=m coderobe]||Robin Broda||ebova ng oebqn qbg zr (rot13)<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=ConnorBehan&SeB=m ConnorBehan]||Connor Behan||connor.behan@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=lfleischer&SeB=m lfleischer]||Lukas Fleischer||lfleischer at archlinux dot org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=eworm&SeB=m eworm]||Christian Hesse||mail@eworm.de<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=daurnimator&SeB=m daurnimator]||Daurnimator||quae at daurnimator com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=dbermond&SeB=m dbermond]||Daniel Bermond||gmail-com: danielbermond<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=demize&SeB=m demize]||[[User:Kyrias|Johannes Löthberg]]||johannes@kyriasis.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=diabonas&SeB=m diabonas]||Jonas Witschel||diabonas@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Dragonlord&SeB=m Dragonlord]||[[User:Drag0nl0rd|Jaroslav Lichtblau]]||svetlemodry @ archlinux org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=dvzrv&SeB=m dvzrv]||[[User:Davezerave|David Runge]]|| dave@sleepmap.de<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=eschwartz&SeB=m eschwartz]||Eli Schwartz|| eschwartz@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=escondida&SeB=m escondida]||Ivy Foster||code @ escondida dot tk<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=farseerfc&SeB=m farseerfc]||Jiachen Yang||farseerfc[at]gmail[dot]com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=felixonmars&SeB=m felixonmars]||Felix Yan||felixonmars@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=FFY00&SeB=m FFY00]||Filipe Laíns||[mailto:lains@archlinux.org lains@archlinux.org]<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Foxboron&SeB=m Foxboron]||Morten Linderud||foxboron@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=foxxx0&SeB=m foxxx0]||Thore Bödecker||me [at] foxxx0 [dot] de<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=freswa&SeB=m freswa]||Frederik Schwan||freswa at archlinux dot org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=giniu&SeB=m giniu]||[[User:giniu|Andrzej Giniewicz]]||gginiu@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages/?SeB=m&K=grazzolini grazzolini]||Giancarlo Razzolini||grazzolini [at] gmail [dot] com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=heftig&SeB=m heftig]||Jan Alexander Steffens||jan.steffens@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=hashworks&SeB=m hashworks]||Justin Kromlinger||mail@hashworks.net<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=jelly&SeB=m jelly]||Jelle van der Waa|| jelle vdwaa nl<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=jleclanche&SeB=m jleclanche]||[[User:jleclanche|Jerome Leclanche]]||jerome''@''leclan''.''ch<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=jsteel&SeB=m jsteel]||Jonathan Steel||jsteel at aur.archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=kgizdov&SeB=m kgizdov]||Konstantin Gizdov||arch@kge.pw<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=kpcyrd&SeB=m kpcyrd]||kpcyrd||git@rxv.cc<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=keenerd&SeB=m keenerd]||Kyle Keen||keenerd@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=lordheavy&SeB=m Lordheavy]||[[User:Lordheavy|Laurent Carlier]]||lordheavym at gmail com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=maximbaz&SeB=m maximbaz]||Maxim Baz||archlinux at maximbaz dot com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=mtorromeo&SeB=m mtorromeo]||Massimiliano Torromeo||massimiliano.torromeo@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Muflone&SeB=m Muflone]||Fabio Castelli||muflone (at) archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=NicoHood&SeB=m NicoHood]||NicoHood||archlinux (cat) nicohood (dog) de<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=polyzen&SeB=m polyzen]||Daniel M. Capella||polyzen@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=sangy&SeB=m sangy]||Santiago Torres-Arias|| santiago @ archlinux ⇶ org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=schuay&SeB=m schuay]||Jakob Gruber||jakob.gruber@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=seblu&SeB=m seblu]||Sébastien Luttringer||s е b l u ''at'' a r c h l і n ux ''dot'' o r g<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=sergej&SeB=m sergej]||[[User:Sergej|Sergej Pupykin]]||pupykin.s+arch@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=shibumi&SeB=m shibumi]||[[User:shibumi|Christian Rebischke]]||Chris.Rebischke [at] archlinux [dot] org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=stativ&SeB=m stativ]||Lukas Jirkovsky||l.jirkovsky strange_curved_character gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=svenstaro&SeB=m svenstaro]||[[User:svenstaro|Sven-Hendrik Haase]]||sven@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=tensor5&SeB=m tensor5]||Nicola Squartini||tensor5@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=wild&SeB=m wild]||[[User:vild|Dan Printzell]]||[mailto:arch@vild.io arch@vild.io]<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Xyne&SeB=m Xyne]||Xyne||ca . archlinux @ xyne, in reverse order<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=xyproto&SeB=m xyproto]||Alexander F. Rødseth||xyproto@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=yan12125&SeB=m yan12125]||[[User:Yan12125|Chih-Hsuan Yen]]||yan12125@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=zorun&SeB=m zorun]||Baptiste Jonglez||archlinux bitsofnetworks org<br />
|}<br />
<br />
== Inactive Trusted Users ==<br />
{| class="wikitable"<br />
! Nick<br />
! Name<br />
! E-Mail<br />
! Comments/Reference<br />
|-<br />
|}<br />
<br />
== Some Past Trusted Users ==<br />
{| class="wikitable"<br />
! Nick<br />
! Name<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=abhidg&SeB=m abhidg]||Abhishek Dasgupta<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Allan&SeB=m Allan]||Allan McRae<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Ambrevar&SeB=m Ambrevar]||[[User:Ambrevar|Pierre Neidhardt]]<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=anders&SeB=m anders]||Anders Bergh<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=angvp&SeB=m angvp]||[[User:Angvp|Angel Velásquez]]<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Atsutane&SeB=m Atsutane]||Thorsten Töpper<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=bardo&SeB=m bardo]||Corrado Primier<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=ndr&SeB=m ndr]||Andrea Scarpino<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=bfinch&SeB=m bfinch]||Bob Finch<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=brain0&SeB=m brain0]||Thomas Bächler<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=bjorn&SeB=m bjorn]||[[User:Bjørn|Bjørn Lindeijer]]<br />
|- <br />
|[https://aur.archlinux.org/packages/?K=Cinelli&SeB=m cinelli] ||Federico Cinelli<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=codemac&SeB=m codemac]||Jeff Mickey<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=cmb&SeB=m cmb]||Chris Brannon<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Daenyth&SeB=m Daenyth]||Daenyth Blank<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=DaNiMoTh&SeB=m DaNiMoTh]||JJ. DaNiMoTh<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=dejari&SeB=m dejari]||Leslie P. Polzer<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=dsa&SeB=m dsa]||Douglas Soares de Andrade<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=dtw&SeB=m dtw]||Phil Dillon-Thiselton<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=elasticdog&SeB=m elasticdog]||Aaron Bull Schaefer<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=encelo&SeB=m encelo]||Angelo Theodorou<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=even&SeB=m even] ||Kessia Pinheiro<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=faidoc&SeB=m Faidoc]||Alexandre Filgueira<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=falconindy&SeB=m falconindy]||Dave Reisner<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=foutrelis&SeB=m foutrelis]||Evangelos Foutras<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=filoktetes&SeB=m filoktetes]||Robert Emil Berge<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=firmicus&SeB=m firmicus]||François Charette<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=flexiondotorg&SeB=m flexiondotorg]||Martin Wimpress<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=ganja_guru&SeB=m ganja_guru]||Varun Acharya<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=gcarrier&SeB=m gcarrier]||Geoffroy Carrier<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Ghost1227&SeB=m Ghost1227]||Dan Griffiths<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=gtmanfred&SeB=m gtmanfred]||Daniel Wallace<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=gummibaerchen&SeB=m gummibaerchen]||Timm Preetz<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=hdoria&SeB=m hdoria]||Hugo Doria<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=iphitus&SeB=m iphitus]||James Rayner<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=itsbrad212&SeB=m itsbrad212]||Brad Fanella<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=kaitocracy&SeB=m kaitocracy]||Kaiting Chen<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=louipc&SeB=m louipc]||Loui Chang<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=mOLOk&SeB=m mOLOk]||Alessio Bolognino<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=nesl247&SeB=m nesl247]||Alex Heck<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Neverth&SeB=m Neverth]||Mikko Seppälä<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Partition&SeB=m Partition]||Mateusz Herych<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=petelewis&SeB=m petelewis]||Peter Lewis<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=PirateJonno&SeB=m PirateJonno]||Jonathan Conder<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=phrakture&SeB=m phrakture]||Aaron Griffin<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Pierre&SeB=m Pierre]||Pierre Schmitz<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=pizzapunk&SeB=m pizzapunk]||Alexander Fehr<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=pjmattal&SeB=m pjmattal]||Paul Mattal<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=pressh&SeB=m pressh]||Ronald van Haren<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Ranguvar&SeB=m Ranguvar]||Devin Cofer<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Romashka&SeB=m Romashka]||Roman Kyrylych<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=schivmeister&SeB=m schivmeister]||[[User:Schivmeister|Ray Rashif]]<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=shastry&SeB=m shastry]||Vinay S Shastry<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Snowman&SeB=m Snowman]||Eric Bélanger<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=shinlun&SeB=m shinlun]||Shinlun Hsieh<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=speps&SeB=m speps]||SpepS<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=StefanHusmann&SeB=m StefanHusmann]||Stefan Husmann<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=STiAT&SeB=m STiAT]||Georg Grabler<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=swiergot&SeB=m swiergot]||Jaroslaw Swierczynski<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=tardo&SeB=m tardo]||Shehzad Qureshi<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=td123&SeB=m td123]||Thomas Dziedzic<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=thatch45&SeB=m thatch45]||Thomas S Hatch<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=thotypous&SeB=m thotypous]||Paulo Matias<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=tredaelli&SeB=m tredaelli]||Timothy Redaelli<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=vegai&SeB=m vegai]||Vesa Kaihlavirta<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=voidnull&SeB=m voidnull]||Giovanni Scafora<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=wizzomafizzo&SeB=m wizzomafizzo]||Callan Barrett<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=wonder&SeB=m wonder]|| Ionut Biru<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Xilon&SeB=m Xilon]||Sebastian Nowicki<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=xterminus&SeB=m xterminus]||Charles Mauch<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=zeus&SeB=m zeus]||Zhukov Pavel<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Dicebot&SeB=m Dicebot]||Mihails Strasuns<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=thestinger&SeB=m thestinger]||Daniel Micay<br />
|}</div>Hashworkshttps://wiki.archlinux.org/index.php?title=EFISTUB&diff=619988EFISTUB2020-06-14T18:16:49Z<p>Hashworks: /* Fix typo */</p>
<hr />
<div>[[Category:Boot loaders]]<br />
[[es:EFISTUB]]<br />
[[ja:EFISTUB]]<br />
[[pt:EFISTUB]]<br />
[[ru:EFISTUB]]<br />
{{Related articles start}}<br />
{{Related|Arch boot process}}<br />
{{Related|Unified Extensible Firmware Interface}}<br />
{{Related articles end}}<br />
<br />
The Linux kernel supports EFISTUB booting which allows [[EFI]] firmware to load the kernel as an EFI executable. The option is enabled by default on Arch Linux kernels, or if compiling the kernel one can activate it by setting {{ic|1=CONFIG_EFI_STUB=y}} in the Kernel configuration. See [https://www.kernel.org/doc/html/latest/admin-guide/efi-stub.html The EFI Boot Stub] for more information.<br />
<br />
With EFISTUB a kernel can be booted directly by a UEFI motherboard or indirectly using a [[boot loader]]. Using a boot loader is recommended if you have multiple kernel/initramfs pairs and your motherboard's UEFI boot menu is not easy to use.<br />
<br />
== Preparing for EFISTUB ==<br />
<br />
First, you must create an [[EFI system partition]] and choose how it is mounted. See [[EFI system partition#Mount the partition]] for all available ESP mounting options.<br />
<br />
{{Tip|<br />
* [[pacman]] will directly update the kernel that the EFI firmware will read if you mount the ESP to {{ic|/boot}}. <br />
* You can keep the kernel and initramfs off of the ESP if you use a boot manager which has a file system driver for the partition where they reside, e.g. [[rEFInd]].<br />
}}<br />
<br />
== Booting EFISTUB ==<br />
<br />
{{Note|Linux Kernel EFISTUB initramfs path should be relative to the EFI System Partition's root and use backslashes (in accordance with EFI standards). For example, if the initramfs is located in {{ic|''esp''/EFI/arch/initramfs-linux.img}}, the corresponding UEFI formatted line should be {{ic|1=initrd=\EFI\arch\initramfs-linux.img}}. In the following examples we will assume that everything is under {{ic|''esp''/}}.}}<br />
<br />
=== Using a boot manager ===<br />
<br />
There are several UEFI boot managers which can provide additional options or simplify the process of UEFI booting - especially if you have multiple kernels/operating systems. See [[Arch boot process#Boot loader]] for more information.<br />
<br />
=== Using UEFI directly ===<br />
<br />
UEFI is designed to remove the need for an intermediate bootloader such as [[GRUB]]. If your motherboard has a good UEFI implementation, it is possible to embed the kernel parameters within a UEFI boot entry and for the motherboard to boot Arch directly. You can use [[efibootmgr]] or UEFI Shell v2 to modify your motherboard's boot entries.<br />
<br />
{{Note|1=<nowiki></nowiki><br />
* Outdated UEFI implementations may have compatibility issues with the Linux kernel. If there is a newer version of your UEFI with bug fixes, consider flashing it with the manufacturer's recommended tool.<br />
* Some firmwares do not pass command line parameters from the boot entries in NVRAM to the EFI binaries.[https://bbs.archlinux.org/viewtopic.php?id=178154] In that case, the kernel and the parameters can be combined into a [[unified kernel image]].<br />
}}<br />
<br />
==== efibootmgr ====<br />
<br />
To create a boot entry with ''efibootmgr'' that will load the kernel:<br />
<br />
# efibootmgr --disk ''/dev/sdX'' --part ''Y'' --create --label "Arch Linux" --loader /vmlinuz-linux --unicode 'root=PARTUUID=''XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'' rw initrd=\initramfs-linux.img' --verbose<br />
<br />
or create a boot entry with ''efibootmgr'' and hibernation on swap partition:<br />
<br />
# efibootmgr --disk ''/dev/sdX'' --part ''Y'' --create --label "Arch Linux" --loader /vmlinuz-linux --unicode 'root=PARTUUID=''XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'' resume=PARTUUID=''XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'' rw initrd=\initramfs-linux.img' --verbose<br />
<br />
Where {{ic|''/dev/sdX''}} and {{ic|''Y''}} are the drive and partition number where the ESP is located. Change the {{ic|1=root=}} and {{ic|1=resume=}} parameters to reflect your Linux root and swap partitions, see [[kernel parameters#Parameter list|kernel parameters]] for supported device name formats, and [[persistent block device naming]] for how to obtain the corresponding value. If omitted, then the first partition on {{ic|''/dev/sda''}} is used as the ESP.<br />
<br />
Note that the {{ic|-u}}/{{ic|--unicode}} argument in quotes is just the list of [[kernel parameters]], so you may need to add additional parameters (e.g. for [[Suspend and hibernate#Required kernel parameters|suspend to disk]] or [[microcode]]).<br />
<br />
After adding the boot entry, you can verify the entry was added properly with:<br />
<br />
# efibootmgr --verbose<br />
<br />
To set the boot order:<br />
<br />
# efibootmgr --bootorder ''XXXX'',''XXXX'' --verbose<br />
<br />
Where ''XXXX'' is the number that appears in the output of ''efibootmgr'' command against each entry.<br />
<br />
{{Tip|1=<nowiki></nowiki><br />
* It is convenient to save the command to create the boot entry in a shell script, which makes it easier to modify, for example when changing kernel parameters. In doing so, consider automating the deletion of old boot entries, as ''efibootmgr'' currently [https://github.com/rhboot/efibootmgr/issues/49 does not support editing existing entries].<br />
* The forum post titled [https://bbs.archlinux.org/viewtopic.php?pid=1090040#p1090040 The linux kernel with build in bootloader?] might also be of interest.<br />
}}<br />
<br />
==== efibootmgr with .efi file ====<br />
<br />
If using {{AUR|cryptboot}} and {{AUR|sbupdate-git}} to generate your own keys for [[Secure Boot#Using_your_own_keys|Secure Boot]] and sign the initramfs and kernel then create a bootable ''.efi'' image, ''efibootmgr'' can be used directly to boot the ''.efi'' file:<br />
<br />
# efibootmgr --create --disk /dev/sdX --part ''partition_number'' --label "''label''" --loader "EFI\''folder''\''file''.efi" --verbose<br />
<br />
See {{man|8|efibootmgr}} for an explanation of the options.<br />
<br />
==== UEFI Shell ====<br />
<br />
Some UEFI implementations make it difficult to modify the NVRAM successfully using ''efibootmgr''. If ''efibootmgr'' cannot successfully create an entry, you can use the [[UEFI#bcfg|bcfg]] command in UEFI Shell v2 (i.e., from the [https://www.archlinux.org/download/ Arch Linux live iso]).<br />
<br />
First, find out the device number where your [[ESP]] resides with:<br />
<br />
Shell> map<br />
<br />
In this example, {{ic|1}} is used as the device number. To list the contents of the [[ESP]]:<br />
<br />
Shell> ls fs1:<br />
<br />
To view the current boot entries:<br />
<br />
Shell> bcfg boot dump<br />
<br />
To add an entry for your kernel, use:<br />
<br />
Shell> bcfg boot add ''N'' fs1:\vmlinuz-linux "Arch Linux"<br />
<br />
Where {{ic|''N''}} is the location where the entry will be added in the boot menu. 0 is the first menu item. Menu items already existing will be shifted in the menu without being discarded.<br />
<br />
Add the necessary kernel options by creating a file on your ESP:<br />
<br />
Shell> edit fs1:\options.txt<br />
<br />
In the file, add the boot line. For example:<br />
<br />
root=/dev/sda2 ro initrd=\initramfs-linux.img<br />
<br />
{{Note|Add extra spaces in the beginning of the line in the file. There is a [[Wikipedia:Byte order mark|byte order mark]] at the beginning of the line that will squash any character next to it which will cause an error when booting.}}<br />
<br />
Press {{ic|F2}} to save and then {{ic|F3}} to exit.<br />
<br />
Add these options to your previous entry:<br />
<br />
Shell> bcfg boot -opt ''N'' fs1:\options.txt<br />
<br />
Repeat this process for any additional entries.<br />
<br />
To remove a previously added item do:<br />
<br />
Shell> bcfg boot rm ''N''<br />
<br />
==== More tools ====<br />
<br />
Some of the tools above, and more, are briefly discussed in [[rEFInd#Tools]].<br />
<br />
==== Using a startup.nsh script ====<br />
<br />
Some UEFI implementations do not retain EFI variables between cold boots (e.g. [[VirtualBox]] before version 6.1) and anything set through the UEFI firmware interface is lost on poweroff.<br />
<br />
The [http://www.uefi.org/sites/default/files/resources/UEFI_Shell_Spec_2_0.pdf UEFI Shell Specification 2.0] establishes that a script called {{ic|startup.nsh}} at the root of the ESP partition will always be interpreted and can contain arbitrary instructions; among those you can set a bootloading line. Make sure you mount the ESP partition on {{ic|/boot}} and create a {{ic|startup.nsh}} script that contains a kernel bootloading line. For example:<br />
<br />
vmlinuz-linux rw root=/dev/sd''X'' [rootfs=''myfs''] [rootflags=''myrootflags''] \<br />
[kernel.flag=''foo''] [''mymodule''.flag=''bar''] \<br />
[initrd=\intel-ucode.img] initrd=\initramfs-linux.img<br />
<br />
This method will work with almost all UEFI firmware versions you may encounter in real hardware, you can use it as last resort. '''The script must be a single long line.''' Sections in brackets are optional and given only as a guide. Shell style linebreaks are for visual clarification only. FAT filesystems use the backslash as path separator and in this case, the backslash declares the initramfs is located in the root of the ESP partition. Only Intel microcode is loaded in the booting parameters line; AMD microcode is read from disk later during the boot process; this is done automatically by the kernel.<br />
<br />
=== Using UEFI Shell ===<br />
<br />
If you do not want to create a permanent boot entry it is possible to launch the kernel from UEFI Shell as if it is a normal UEFI application:<br />
<br />
> fs0:<br />
> \vmlinuz-linux root=PARTUUID=3518bb68-d01e-45c9-b973-0b5d918aae96 rw initrd=\initramfs-linux.img<br />
<br />
In this case, the kernel parameters are passed as normal parameters to the launched EFISTUB kernel file.<br />
<br />
To avoid needing to remember all of your kernel parameters every time, you can save the executable command to a shell script such as {{ic|archlinux.nsh}} on your UEFI System Partition, then run it with:<br />
<br />
> fs0:<br />
> archlinux<br />
<br />
== Troubleshooting ==<br />
<br />
=== Cannot create a new boot entry with efibootmgr ===<br />
<br />
Some kernel and ''efibootmgr'' version combinations might refuse to create new boot entries. This could be due to lack of free space in the NVRAM. You can try deleting any EFI dump files:<br />
<br />
# rm /sys/firmware/efi/efivars/dump-*<br />
<br />
Or, as a last resort, boot with the {{ic|efi_no_storage_paranoia}} kernel parameter. You can also try to [[downgrade]] your ''efibootmgr'' install to version 0.11.0. This version works with Linux version 4.0.6. See the bug discussion {{Bug|34641}}, in particular the [https://bugs.archlinux.org/task/34641#comment111365 closing comment], for more information.<br />
<br />
=== Newly created boot entries are removed ===<br />
<br />
Some motherboards may remove boot entries after a couple of boots. This could be due to lack of free space in the NVRAM. To prevent this from occurring, it may help to reduce the amount of Linux boot entries being added by ''efibootmgr'' by minimizing your entry creation process, as well as reducing the amount of automatic drive boot entries by the [[Wikipedia:Unified Extensible Firmware Interface#CSM booting|Compatibility Support Module (CSM)]] by disabling it from your UEFI settings.<br />
<br />
=== Forward slashes in initrd paths fail to boot ===<br />
<br />
Backslashes are required in the initrd paths ({{ic|1=initrd=\initramfs-linux.img}}), using forward slashes will result in the following error:<br />
<br />
EFI stub: ERROR: Failed to open file: /initramfs-linux.img<br />
<br />
== See also ==<br />
<br />
* [https://www.kernel.org/doc/html/latest/admin-guide/efi-stub.html Linux Kernel Documentation on EFISTUB]<br />
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commitdiff;h=291f36325f9f252bd76ef5f603995f37e453fc60;hp=55839d515495e766605d7aaabd9c2758370a8d27 Linux Kernel EFISTUB Git Commit]<br />
* [http://www.rodsbooks.com/efi-bootloaders/efistub.html Rod Smith's page on EFISTUB]</div>Hashworkshttps://wiki.archlinux.org/index.php?title=EFISTUB&diff=619987EFISTUB2020-06-14T18:16:22Z<p>Hashworks: /* Add note about backward slashes */</p>
<hr />
<div>[[Category:Boot loaders]]<br />
[[es:EFISTUB]]<br />
[[ja:EFISTUB]]<br />
[[pt:EFISTUB]]<br />
[[ru:EFISTUB]]<br />
{{Related articles start}}<br />
{{Related|Arch boot process}}<br />
{{Related|Unified Extensible Firmware Interface}}<br />
{{Related articles end}}<br />
<br />
The Linux kernel supports EFISTUB booting which allows [[EFI]] firmware to load the kernel as an EFI executable. The option is enabled by default on Arch Linux kernels, or if compiling the kernel one can activate it by setting {{ic|1=CONFIG_EFI_STUB=y}} in the Kernel configuration. See [https://www.kernel.org/doc/html/latest/admin-guide/efi-stub.html The EFI Boot Stub] for more information.<br />
<br />
With EFISTUB a kernel can be booted directly by a UEFI motherboard or indirectly using a [[boot loader]]. Using a boot loader is recommended if you have multiple kernel/initramfs pairs and your motherboard's UEFI boot menu is not easy to use.<br />
<br />
== Preparing for EFISTUB ==<br />
<br />
First, you must create an [[EFI system partition]] and choose how it is mounted. See [[EFI system partition#Mount the partition]] for all available ESP mounting options.<br />
<br />
{{Tip|<br />
* [[pacman]] will directly update the kernel that the EFI firmware will read if you mount the ESP to {{ic|/boot}}. <br />
* You can keep the kernel and initramfs off of the ESP if you use a boot manager which has a file system driver for the partition where they reside, e.g. [[rEFInd]].<br />
}}<br />
<br />
== Booting EFISTUB ==<br />
<br />
{{Note|Linux Kernel EFISTUB initramfs path should be relative to the EFI System Partition's root and use backslashes (in accordance with EFI standards). For example, if the initramfs is located in {{ic|''esp''/EFI/arch/initramfs-linux.img}}, the corresponding UEFI formatted line should be {{ic|1=initrd=\EFI\arch\initramfs-linux.img}}. In the following examples we will assume that everything is under {{ic|''esp''/}}.}}<br />
<br />
=== Using a boot manager ===<br />
<br />
There are several UEFI boot managers which can provide additional options or simplify the process of UEFI booting - especially if you have multiple kernels/operating systems. See [[Arch boot process#Boot loader]] for more information.<br />
<br />
=== Using UEFI directly ===<br />
<br />
UEFI is designed to remove the need for an intermediate bootloader such as [[GRUB]]. If your motherboard has a good UEFI implementation, it is possible to embed the kernel parameters within a UEFI boot entry and for the motherboard to boot Arch directly. You can use [[efibootmgr]] or UEFI Shell v2 to modify your motherboard's boot entries.<br />
<br />
{{Note|1=<nowiki></nowiki><br />
* Outdated UEFI implementations may have compatibility issues with the Linux kernel. If there is a newer version of your UEFI with bug fixes, consider flashing it with the manufacturer's recommended tool.<br />
* Some firmwares do not pass command line parameters from the boot entries in NVRAM to the EFI binaries.[https://bbs.archlinux.org/viewtopic.php?id=178154] In that case, the kernel and the parameters can be combined into a [[unified kernel image]].<br />
}}<br />
<br />
==== efibootmgr ====<br />
<br />
To create a boot entry with ''efibootmgr'' that will load the kernel:<br />
<br />
# efibootmgr --disk ''/dev/sdX'' --part ''Y'' --create --label "Arch Linux" --loader /vmlinuz-linux --unicode 'root=PARTUUID=''XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'' rw initrd=\initramfs-linux.img' --verbose<br />
<br />
or create a boot entry with ''efibootmgr'' and hibernation on swap partition:<br />
<br />
# efibootmgr --disk ''/dev/sdX'' --part ''Y'' --create --label "Arch Linux" --loader /vmlinuz-linux --unicode 'root=PARTUUID=''XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'' resume=PARTUUID=''XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'' rw initrd=\initramfs-linux.img' --verbose<br />
<br />
Where {{ic|''/dev/sdX''}} and {{ic|''Y''}} are the drive and partition number where the ESP is located. Change the {{ic|1=root=}} and {{ic|1=resume=}} parameters to reflect your Linux root and swap partitions, see [[kernel parameters#Parameter list|kernel parameters]] for supported device name formats, and [[persistent block device naming]] for how to obtain the corresponding value. If omitted, then the first partition on {{ic|''/dev/sda''}} is used as the ESP.<br />
<br />
Note that the {{ic|-u}}/{{ic|--unicode}} argument in quotes is just the list of [[kernel parameters]], so you may need to add additional parameters (e.g. for [[Suspend and hibernate#Required kernel parameters|suspend to disk]] or [[microcode]]).<br />
<br />
After adding the boot entry, you can verify the entry was added properly with:<br />
<br />
# efibootmgr --verbose<br />
<br />
To set the boot order:<br />
<br />
# efibootmgr --bootorder ''XXXX'',''XXXX'' --verbose<br />
<br />
Where ''XXXX'' is the number that appears in the output of ''efibootmgr'' command against each entry.<br />
<br />
{{Tip|1=<nowiki></nowiki><br />
* It is convenient to save the command to create the boot entry in a shell script, which makes it easier to modify, for example when changing kernel parameters. In doing so, consider automating the deletion of old boot entries, as ''efibootmgr'' currently [https://github.com/rhboot/efibootmgr/issues/49 does not support editing existing entries].<br />
* The forum post titled [https://bbs.archlinux.org/viewtopic.php?pid=1090040#p1090040 The linux kernel with build in bootloader?] might also be of interest.<br />
}}<br />
<br />
==== efibootmgr with .efi file ====<br />
<br />
If using {{AUR|cryptboot}} and {{AUR|sbupdate-git}} to generate your own keys for [[Secure Boot#Using_your_own_keys|Secure Boot]] and sign the initramfs and kernel then create a bootable ''.efi'' image, ''efibootmgr'' can be used directly to boot the ''.efi'' file:<br />
<br />
# efibootmgr --create --disk /dev/sdX --part ''partition_number'' --label "''label''" --loader "EFI\''folder''\''file''.efi" --verbose<br />
<br />
See {{man|8|efibootmgr}} for an explanation of the options.<br />
<br />
==== UEFI Shell ====<br />
<br />
Some UEFI implementations make it difficult to modify the NVRAM successfully using ''efibootmgr''. If ''efibootmgr'' cannot successfully create an entry, you can use the [[UEFI#bcfg|bcfg]] command in UEFI Shell v2 (i.e., from the [https://www.archlinux.org/download/ Arch Linux live iso]).<br />
<br />
First, find out the device number where your [[ESP]] resides with:<br />
<br />
Shell> map<br />
<br />
In this example, {{ic|1}} is used as the device number. To list the contents of the [[ESP]]:<br />
<br />
Shell> ls fs1:<br />
<br />
To view the current boot entries:<br />
<br />
Shell> bcfg boot dump<br />
<br />
To add an entry for your kernel, use:<br />
<br />
Shell> bcfg boot add ''N'' fs1:\vmlinuz-linux "Arch Linux"<br />
<br />
Where {{ic|''N''}} is the location where the entry will be added in the boot menu. 0 is the first menu item. Menu items already existing will be shifted in the menu without being discarded.<br />
<br />
Add the necessary kernel options by creating a file on your ESP:<br />
<br />
Shell> edit fs1:\options.txt<br />
<br />
In the file, add the boot line. For example:<br />
<br />
root=/dev/sda2 ro initrd=\initramfs-linux.img<br />
<br />
{{Note|Add extra spaces in the beginning of the line in the file. There is a [[Wikipedia:Byte order mark|byte order mark]] at the beginning of the line that will squash any character next to it which will cause an error when booting.}}<br />
<br />
Press {{ic|F2}} to save and then {{ic|F3}} to exit.<br />
<br />
Add these options to your previous entry:<br />
<br />
Shell> bcfg boot -opt ''N'' fs1:\options.txt<br />
<br />
Repeat this process for any additional entries.<br />
<br />
To remove a previously added item do:<br />
<br />
Shell> bcfg boot rm ''N''<br />
<br />
==== More tools ====<br />
<br />
Some of the tools above, and more, are briefly discussed in [[rEFInd#Tools]].<br />
<br />
==== Using a startup.nsh script ====<br />
<br />
Some UEFI implementations do not retain EFI variables between cold boots (e.g. [[VirtualBox]] before version 6.1) and anything set through the UEFI firmware interface is lost on poweroff.<br />
<br />
The [http://www.uefi.org/sites/default/files/resources/UEFI_Shell_Spec_2_0.pdf UEFI Shell Specification 2.0] establishes that a script called {{ic|startup.nsh}} at the root of the ESP partition will always be interpreted and can contain arbitrary instructions; among those you can set a bootloading line. Make sure you mount the ESP partition on {{ic|/boot}} and create a {{ic|startup.nsh}} script that contains a kernel bootloading line. For example:<br />
<br />
vmlinuz-linux rw root=/dev/sd''X'' [rootfs=''myfs''] [rootflags=''myrootflags''] \<br />
[kernel.flag=''foo''] [''mymodule''.flag=''bar''] \<br />
[initrd=\intel-ucode.img] initrd=\initramfs-linux.img<br />
<br />
This method will work with almost all UEFI firmware versions you may encounter in real hardware, you can use it as last resort. '''The script must be a single long line.''' Sections in brackets are optional and given only as a guide. Shell style linebreaks are for visual clarification only. FAT filesystems use the backslash as path separator and in this case, the backslash declares the initramfs is located in the root of the ESP partition. Only Intel microcode is loaded in the booting parameters line; AMD microcode is read from disk later during the boot process; this is done automatically by the kernel.<br />
<br />
=== Using UEFI Shell ===<br />
<br />
If you do not want to create a permanent boot entry it is possible to launch the kernel from UEFI Shell as if it is a normal UEFI application:<br />
<br />
> fs0:<br />
> \vmlinuz-linux root=PARTUUID=3518bb68-d01e-45c9-b973-0b5d918aae96 rw initrd=\initramfs-linux.img<br />
<br />
In this case, the kernel parameters are passed as normal parameters to the launched EFISTUB kernel file.<br />
<br />
To avoid needing to remember all of your kernel parameters every time, you can save the executable command to a shell script such as {{ic|archlinux.nsh}} on your UEFI System Partition, then run it with:<br />
<br />
> fs0:<br />
> archlinux<br />
<br />
== Troubleshooting ==<br />
<br />
=== Cannot create a new boot entry with efibootmgr ===<br />
<br />
Some kernel and ''efibootmgr'' version combinations might refuse to create new boot entries. This could be due to lack of free space in the NVRAM. You can try deleting any EFI dump files:<br />
<br />
# rm /sys/firmware/efi/efivars/dump-*<br />
<br />
Or, as a last resort, boot with the {{ic|efi_no_storage_paranoia}} kernel parameter. You can also try to [[downgrade]] your ''efibootmgr'' install to version 0.11.0. This version works with Linux version 4.0.6. See the bug discussion {{Bug|34641}}, in particular the [https://bugs.archlinux.org/task/34641#comment111365 closing comment], for more information.<br />
<br />
=== Newly created boot entries are removed ===<br />
<br />
Some motherboards may remove boot entries after a couple of boots. This could be due to lack of free space in the NVRAM. To prevent this from occuring, it may help to reduce the amount of Linux boot entries being added by ''efibootmgr'' by minimizing your entry creation process, as well as reducing the amount of automatic drive boot entries by the [[Wikipedia:Unified Extensible Firmware Interface#CSM booting|Compatibility Support Module (CSM)]] by disabling it from your UEFI settings.<br />
<br />
=== Forward slashes in initrd paths fail to boot ===<br />
<br />
Backslashes are required in the initrd paths ({{ic|1=initrd=\initramfs-linux.img}}), using forward slashes will result in the following error:<br />
<br />
EFI stub: ERROR: Failed to open file: /initramfs-linux.img<br />
<br />
== See also ==<br />
<br />
* [https://www.kernel.org/doc/html/latest/admin-guide/efi-stub.html Linux Kernel Documentation on EFISTUB]<br />
* [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commitdiff;h=291f36325f9f252bd76ef5f603995f37e453fc60;hp=55839d515495e766605d7aaabd9c2758370a8d27 Linux Kernel EFISTUB Git Commit]<br />
* [http://www.rodsbooks.com/efi-bootloaders/efistub.html Rod Smith's page on EFISTUB]</div>Hashworkshttps://wiki.archlinux.org/index.php?title=GitLab&diff=616705GitLab2020-05-28T15:48:06Z<p>Hashworks: /* Adjust path to gitconfig since it's a symlink, add alternative with sudo -u */</p>
<hr />
<div>[[Category:Git web interfaces]]<br />
[[ja:Gitlab]]<br />
[[zh-hans:GitLab]]<br />
{{Related articles start}}<br />
{{Related|Gitolite}}<br />
{{Related|Ruby on Rails}}<br />
{{Related articles end}}<br />
<br />
From [https://about.gitlab.com/ GitLab's homepage]:<br />
<br />
:GitLab offers git repository management, code reviews, issue tracking, activity feeds and wikis. Enterprises install GitLab on-premise and connect it with LDAP and Active Directory servers for secure authentication and authorization. A single GitLab server can handle more than 25,000 users but it is also possible to create a high availability setup with multiple active servers.<br />
<br />
An example live version can be found at [https://gitlab.com/ GitLab.com].<br />
<br />
== Installation ==<br />
<br />
{{Note|This article covers installing and configuring GitLab without HTTPS at first. If needed, see [[#Advanced configuration]] to set up SSL.}}<br />
<br />
GitLab requires [[Redis]] and a database backend. If you plan to run it on the same machine, first install [[PostgreSQL]].<br />
<br />
[[Install]] the {{pkg|gitlab}} package.<br />
<br />
In order to receive mail notifications, a mail server must be installed and configured. See [[:Category:Mail server]] for details.<br />
<br />
== Configuration ==<br />
<br />
=== Preliminary Notes ===<br />
<br />
GitLab is composed of multiple components, see the [https://docs.gitlab.com/ce/development/architecture.html architecture overview page].<br />
<br />
The {{pkg|gitlab}} package installs GitLab's files in a manner that more closely follow standard Linux conventions:<br />
<br />
{| class="wikitable"<br />
! Description <br />
! [https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/installation.md GitLab's Official] <br />
! {{pkg|gitlab}} <br />
|----------------------------------------------------------<br />
| User (Home Directory)<br />
| {{ic|git}} ({{ic|/home/git}})<br />
| {{ic|gitlab}} ({{ic|/var/lib/gitlab}})<br />
|----------------------------------------------------------<br />
| Configuration File GitShell<br />
| {{ic|/home/git/gitlab-shell/config.yml}}<br />
| {{ic|/etc/webapps/gitlab-shell/config.yml}}<br />
|----------------------------------------------------------<br />
| Configuration File GitLab<br />
| {{ic|/home/git/gitlab/config/gitlab.yml}}<br />
| {{ic|/etc/webapps/gitlab/gitlab.yml}}<br />
|----------------------------------------------------------<br />
| Logs<br />
| {{ic|/home/git/log}}<br />
| {{ic|/var/log/gitlab}}<br />
|----------------------------------------------------------<br />
| Unix socket files / PID files<br />
| {{ic|/home/git/sockets}}<br />
| {{ic|/run/gitlab}}<br />
|}<br />
<br />
{{Tip|If you are familiar with the [[Arch Build System]] you can edit the PKGBUILD and relevant files to change gitlab's home directory to a place of your liking.}}<br />
<br />
=== GitLab ===<br />
<br />
Edit {{ic|/etc/webapps/gitlab/gitlab.yml}} and setup at least the following parameters:<br />
<br />
{{Note|The {{ic|hostname}} and {{ic|port}} are used for the {{ic|git clone http://''hostname:port''}} as example.}}<br />
<br />
'''Hostname:''' In the {{ic|gitlab:}} section set {{ic|host:}} - replacing {{ic|localhost}} to {{ic|''yourdomain.com''}} ('''note:''' no 'http://' or trailing slash) - into your fully qualified domain name.<br />
<br />
'''Port:''' {{ic|port:}} can be confusing. This is not the port that the GitLab server (Puma) runs on; it is the port that users will initially access through in their browser. Basically, if you intend for users to visit {{ic|''yourdomain.com''}} in their browser, without appending a port number to the domain name, leave {{ic|port:}} as {{ic|80}}. If you intend your users to type something like {{ic|''yourdomain.com:3425''}} into their browsers, then you would set {{ic|port:}} to {{ic|3425}}. You will also have to '''configure your webserver''' to listen on that port.<br />
<br />
'''Timezone (optional):''' The {{ic|time_zone:}} parameter is optional, but may be useful to force the zone of GitLab applications.<br />
<br />
=== Custom port for Puma ===<br />
<br />
GitLab Puma is the main component which processes most of the user requests. By default, it listens on the {{ic|/run/gitlab/gitlab.socket}} UNIX socket which can be changed in the {{ic|/etc/webapps/gitlab/puma.rb}} file.<br />
<br />
To configure Puma to listen on a TCP port as well as UNIX socket:<br />
<br />
{{hc|/etc/webapps/gitlab/puma.rb|2=<br />
bind 'unix:///run/gitlab/gitlab.socket'<br />
bind 'tcp://127.0.0.1:8080'<br />
}}<br />
<br />
If the Puma address is changed, the configuration of other components which communicate with Puma have to be updated as well:<br />
<br />
* For GitLab Shell, update the {{ic|gitlab_url}} variable in {{ic|/etc/webapps/gitlab-shell/config.yml}} and {{ic|/etc/gitlab-gitaly/config.toml}}.<br />
: {{Tip|According to the comment in the config file, UNIX socket path can be specified with URL-escaped slashes (i.e. {{ic|http+unix://%2Frun%2Fgitlab%2Fgitlab.socket}} for the default {{ic|/run/gitlab/gitlab.socket}}). Additionally, un-escaped slashes can be used to specify the [https://docs.gitlab.com/ce/install/relative_url.html relative URL root] (e.g. {{ic|/gitlab}}).}}<br />
* For GitLab Workhorse, [[edit]] the {{ic|gitlab-workhorse.service}} and update the {{ic|-authBackend}} option.<br />
<br />
=== Secret strings ===<br />
<br />
Make sure that the files {{ic|/etc/webapps/gitlab/secret}} and {{ic|/etc/webapps/gitlab-shell/secret}} files contain something. Their content should be kept secret because they are used for the generation of authentication tokens etc.<br />
<br />
For example, random strings can be generated with the following commands:<br />
<br />
# hexdump -v -n 64 -e '1/1 "%02x"' /dev/urandom > /etc/webapps/gitlab/secret<br />
# chown root:gitlab /etc/webapps/gitlab/secret<br />
# chmod 640 /etc/webapps/gitlab/secret<br />
<br />
# hexdump -v -n 64 -e '1/1 "%02x"' /dev/urandom > /etc/webapps/gitlab-shell/secret<br />
# chown root:gitlab /etc/webapps/gitlab-shell/secret<br />
# chmod 640 /etc/webapps/gitlab-shell/secret<br />
<br />
Also fill in (new) secret strings for {{ic|secrets.yml}}:<br />
<br />
{{hc|/etc/webapps/gitlab/secrets.yml|<br />
production:<br />
secret_key_base: ''secret''<br />
db_key_base: ''secret''<br />
}}<br />
<br />
=== Redis ===<br />
<br />
In order to provide sufficient performance you will need a cache database. [[Redis#Installation|Install]] and [[Redis#Configuration|configure]] a Redis instance, being careful to the section dedicated to listening via a socket.<br />
<br />
Add the {{ic|gitlab}} user to the {{ic|redis}} [[user group]] and update this configuration file:<br />
<br />
{{hc|/etc/webapps/gitlab/resque.yml|2=<br />
development:<br />
url: unix:/run/redis/redis.sock<br />
test:<br />
url: unix:/run/redis/redis.sock<br />
production:<br />
url: unix:/run/redis/redis.sock<br />
}}<br />
<br />
=== PostgreSQL database ===<br />
<br />
A [[PostgreSQL]] database will be required before Gitlab can be run.<br />
<br />
Login to PostgreSQL and create the {{ic|gitlabhq_production}} database along with its user. Remember to change {{ic|your_username_here}} and {{ic|your_password_here}} to the real values:<br />
<br />
# psql -d template1<br />
<br />
{{bc|1=<br />
template1=# CREATE USER your_username_here WITH PASSWORD 'your_password_here';<br />
template1=# ALTER USER your_username_here SUPERUSER;<br />
template1=# CREATE DATABASE gitlabhq_production OWNER your_username_here;<br />
template1=# \q<br />
}}<br />
<br />
{{Note|The reason for creating the user as a superuser is that GitLab is trying to be "smart" and install extensions (not just create them in its own userspace). And this is only allowed by superusers in Postgresql.}}<br />
<br />
Try connecting to the new database with the new user to verify it works:<br />
<br />
# psql -d gitlabhq_production<br />
<br />
Copy the PostgreSQL template file before configuring it:<br />
<br />
# cp /usr/share/doc/gitlab/database.yml.postgresql /etc/webapps/gitlab/database.yml<br />
<br />
Open the new {{ic|/etc/webapps/gitlab/database.yml}} and set the values for {{ic|username:}} and {{ic|password:}}. For example:<br />
<br />
{{hc|/etc/webapps/gitlab/database.yml|<br />
#<br />
# PRODUCTION<br />
#<br />
production:<br />
adapter: postgresql<br />
encoding: unicode<br />
database: gitlabhq_production<br />
pool: 10<br />
username: your_username_here<br />
password: "your_password_here"<br />
# host: localhost<br />
# port: 5432<br />
socket: /run/postgresql/.s.PGSQL.5432<br />
...<br />
}}<br />
<br />
For our purposes (unless you know what you are doing), you do not need to worry about configuring the other databases listed in {{ic|/etc/webapps/gitlab/database.yml}}. We only need to set up the production database to get GitLab working.<br />
<br />
=== Firewall ===<br />
<br />
If you want to give direct access to your Gitlab installation through an [[iptables]] firewall, you may need to adjust the port and the network address:<br />
<br />
# iptables -A tcp_inbound -p TCP -s '''192.168.1.0/24''' --destination-port '''80''' -j ACCEPT<br />
<br />
To enable API-access:<br />
<br />
# iptables -A tcp_inbound -p TCP -s '''192.168.1.0/24''' --destination-port '''8080''' -j ACCEPT<br />
<br />
If you are behind a router, do not forget to forward this port to the running GitLab server host, if you want to allow WAN-access.<br />
<br />
=== Initialize Gitlab database ===<br />
<br />
Start the [[Redis]] server and the {{ic|gitlab-gitaly.service}} before initializing the database.<br />
<br />
Initialize the database and activate advanced features:<br />
<br />
# su - gitlab -s /bin/sh -c "cd '/usr/share/webapps/gitlab'; EXECJS_RUNTIME=Disabled bundle exec rake gitlab:setup RAILS_ENV=production"<br />
<br />
Finally run the following commands to check your installation:<br />
<br />
# su - gitlab -s /bin/sh -c "cd '/usr/share/webapps/gitlab'; EXECJS_RUNTIME=Disabled bundle exec rake gitlab:env:info RAILS_ENV=production"<br />
# su - gitlab -s /bin/sh -c "cd '/usr/share/webapps/gitlab'; EXECJS_RUNTIME=Disabled bundle exec rake gitlab:check RAILS_ENV=production"<br />
<br />
{{note|<br />
*The ''gitlab:env:info'' and ''gitlab:check'' commands will show a fatal error related to git. This is OK.<br />
*The ''gitlab:check'' will complain about missing initscripts. This is nothing to worry about, as [[systemd]] service files are used instead (which GitLab does not recognize).<br />
}}<br />
<br />
=== Adjust modifier bits ===<br />
<br />
(The gitlab check will not pass if the user and group ownership is not configured properly)<br />
<br />
# chmod -R ug+rwX,o-rwx /var/lib/gitlab/repositories/<br />
# chmod -R ug-s /var/lib/gitlab/repositories<br />
# find /var/lib/gitlab/repositories/ -type d -print0 | xargs -0 chmod g+s<br />
<br />
== Start and test GitLab ==<br />
<br />
Make sure [[PostgreSQL]] and [[Redis]] are running and setup correctly.<br />
<br />
Then [[start]]/[[enable]] {{ic|gitlab.target}}.<br />
<br />
Now test your GitLab instance by visiting http://localhost:8080; you should be prompted to create a password:<br />
<br />
{{bc|<br />
username: root<br />
password: You will be prompted to create one on your first visit.<br />
}}<br />
<br />
To access GitLab from an outside network, the upstream documentation recommends to use an established web server as a proxy. See [[#Web server configuration]] for details. <br />
<br />
See [[#Troubleshooting]] and log files inside the {{ic|/usr/share/webapps/gitlab/log/}} directory for troubleshooting.<br />
<br />
== Upgrade database on updates ==<br />
<br />
After updating the {{Pkg|gitlab}} package, it is required to upgrade the database:<br />
# su - gitlab -s /bin/sh -c "cd '/usr/share/webapps/gitlab'; EXECJS_RUNTIME=Disabled bundle exec rake db:migrate RAILS_ENV=production"<br />
<br />
Afterwards, restart gitlab-related services:<br />
# systemctl daemon-reload<br />
# systemctl restart gitlab-sidekiq gitlab-puma gitlab-workhorse gitlab-gitaly<br />
<br />
== Advanced configuration ==<br />
<br />
=== Basic SSH ===<br />
<br />
After completing the basic installation, set up SSH access for users. Configuration for [[OpenSSH]] is described below. [[SSH#Implementations|Other SSH clients and servers]] will require different modifications.<br />
<br />
For tips on adding user SSH keys, the process is well-documented on the [https://docs.gitlab.com/ee/ssh/ GitLab] website. You can check the administrator logs at {{ic|/var/lib/gitlab/log/gitlab-shell.log}} to confirm user SSH keys are being submitted properly. Behind the scenes, GitLab adds these keys to its ''authorized_keys'' file in {{ic|/var/lib/gitlab/.ssh/authorized_keys}}.<br />
<br />
The common method of testing keys (ex: {{ic|<nowiki>$ ssh -T git@</nowiki>''YOUR_SERVER''}}) requires a bit of extra configuration to work correctly. The user configured in {{ic|/etc/webapps/gitlab/gitlab.yml}} (default user: {{ic|gitlab}}) must be added to the server's sshd configuration file, in addition to a handful of other changes:<br />
{{hc|/etc/ssh/sshd_config|<br />
PubkeyAuthentication yes<br />
AuthorizedKeysFile %h/.ssh/authorized_keys<br />
}}<br />
<br />
If your {{ic|/etc/ssh/sshd_config}} contains {{ic|AllowUsers}} option then please add {{ic|gitlab}} user to the list:<br />
{{hc|/etc/ssh/sshd_config|<br />
AllowUsers gitlab <i>foobar</i><br />
}}<br />
<br />
After updating the configuration file, restart the ssh daemon:<br />
# systemctl restart sshd<br />
<br />
Test user SSH keys (optionally add -v to see extra information):<br />
<nowiki>$ ssh -T </nowiki>'''gitlab'''@''YOUR_SERVER''<br />
<br />
=== Custom SSH connection ===<br />
<br />
If you are running SSH on a non-standard port, you must change the GitLab user's SSH config:<br />
{{hc|/var/lib/gitlab/.ssh/config|2=<br />
host localhost # Give your setup a name (here: override localhost)<br />
user gitlab # Your remote git user<br />
port 2222 # Your port number<br />
hostname 127.0.0.1; # Your server name or IP<br />
}}<br />
<br />
You also need to change the corresponding options (e.g. ssh_user, ssh_host, admin_uri) in the {{ic|/etc/webapps/gitlab/gitlab.yml}} file.<br />
<br />
=== HTTPS/SSL ===<br />
<br />
==== Change GitLab configs ====<br />
<br />
Modify {{ic|/etc/webapps/gitlab/shell.yml}} so the url to your GitLab site starts with {{ic|https://}}.<br />
Modify {{ic|/etc/webapps/gitlab/gitlab.yml}} so that {{ic|https:}} setting is set to {{ic|true}}.<br />
<br />
See also [[Apache HTTP Server#TLS]] and [[Let’s Encrypt]].<br />
<br />
==== Let's Encrypt ====<br />
<br />
To validate your URL, the Let's Encrypt process will try to access your gitlab server with something like {{ic|<nowiki>https://gitlab.</nowiki>''YOUR_SERVER_FQDN''/.well-known/acme-challenge/''A_LONG_ID''}}. But, due to gitlab configuration, every request to {{ic|gitlab.''YOUR_SERVER_FQDN''}} will be redirected to a proxy (gitlab-workhorse) that will not be able to deal with this URL.<br />
<br />
To bypass this issue, you can use the Let's Encrypt webroot configuration, setting the webroot at {{ic|/srv/http/letsencrypt/}}.<br />
<br />
Additionally, force the Let's Encrypt request for gitlab to be redirected to this webroot by adding the following:<br />
<br />
{{hc|/etc/http/conf/extra/gitlab.conf|<br />
Alias "/.well-known" "/srv/http/letsencrypt/.well-known"<br />
RewriteCond %{REQUEST_URI} !/\.well-known/.*<br />
}}<br />
<br />
=== Web server configuration ===<br />
<br />
If you want to integrate GitLab into a running web server instead of using its build-in HTTP server Puma, follow these instructions.<br />
<br />
==== Node.js ====<br />
<br />
You can easily set up an HTTP proxy on port 443 to proxy traffic to the GitLab application on port 8080 using http-master for Node.js. After you have created your domain's OpenSSL keys and have gotten you CA certificate (or self signed it), then go to https://github.com/CodeCharmLtd/http-master to learn how easy it is to proxy requests to GitLab using HTTPS. http-master is built on top of [https://github.com/nodejitsu/node-http-proxy node-http-proxy].<br />
<br />
==== Nginx ====<br />
<br />
See [[Nginx#Configuration]] for basic ''nginx'' configuration and [[Nginx#TLS]] for enabling HTTPS. The sample in this section also assumes that server blocks are managed with [[Nginx#Managing server entries]].<br />
<br />
Create and edit the configuration based on the following snippet. See the [https://gitlab.com/gitlab-org/gitlab-ce/tree/master/lib/support/nginx upstream GitLab repository] for more examples.<br />
<br />
{{hc|/etc/nginx/servers-available/gitlab|<nowiki><br />
upstream gitlab-workhorse {<br />
server unix:/run/gitlab/gitlab-workhorse.socket fail_timeout=0;<br />
}<br />
<br />
server {<br />
listen 80; # IPv4 HTTP<br />
#listen 443 ssl http2; # uncomment to enable IPv4 HTTPS + HTTP/2<br />
#listen [::]:80; # uncomment to enable IPv6 HTTP<br />
#listen [::]:443 ssl http2; # uncomment to enable IPv6 HTTPS + HTTP/2<br />
server_name example.com;<br />
<br />
#ssl_certificate ssl/example.com.crt;<br />
#ssl_certificate_key ssl/example.com.key;<br />
<br />
location / {<br />
# unlimited upload size in nginx (so the setting in GitLab applies)<br />
client_max_body_size 0;<br />
<br />
# proxy timeout should match the timeout value set in /etc/webapps/gitlab/puma.rb<br />
proxy_read_timeout 60;<br />
proxy_connect_timeout 60;<br />
proxy_redirect off;<br />
<br />
proxy_set_header Host $http_host;<br />
proxy_set_header X-Real-IP $remote_addr;<br />
proxy_set_header X-Forwarded-Ssl on;<br />
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br />
proxy_set_header X-Forwarded-Proto $scheme;<br />
<br />
proxy_pass http://gitlab-workhorse;<br />
}<br />
<br />
error_page 404 /404.html;<br />
error_page 422 /422.html;<br />
error_page 500 /500.html;<br />
error_page 502 /502.html;<br />
error_page 503 /503.html;<br />
location ~ ^/(404|422|500|502|503)\.html$ {<br />
root /usr/share/webapps/gitlab/public;<br />
internal;<br />
}<br />
}<br />
</nowiki>}}<br />
<br />
==== Apache ====<br />
<br />
Install and configure the [[Apache HTTP Server]]. You can use these [https://gitlab.com/gitlab-org/gitlab-recipes/tree/master/web-server/apache upstream recipes] to get started with the configuration file for GitLab's virtual host.<br />
<br />
For the SSL configuration see [[Apache HTTP Server#TLS]]. If you do not need it, remove it. Notice that the SSL virtual host needs a specific IP instead of generic. Also if you set a custom port for Puma, do not forget to set it at the {{ic|BalanceMember}} line.<br />
<br />
== Useful tips ==<br />
<br />
=== Rake tasks ===<br />
<br />
A number of setup/maintenance/etc tasks are available through rake. To list them, go to Gitlab's home directory:<br />
# cd /usr/share/webapps/gitlab<br />
<br />
and run:<br />
{{hc|<nowiki># rake -T | grep gitlab</nowiki>|<nowiki><br />
rake gitlab:app:check # GITLAB | Check the configuration of the GitLab Rails app<br />
rake gitlab:backup:create # GITLAB | Create a backup of the GitLab system<br />
rake gitlab:backup:restore # GITLAB | Restore a previously created backup<br />
rake gitlab:check # GITLAB | Check the configuration of GitLab and its environment<br />
rake gitlab:cleanup:block_removed_ldap_users # GITLAB | Cleanup | Block users that have been removed in LDAP<br />
rake gitlab:cleanup:dirs # GITLAB | Cleanup | Clean namespaces<br />
rake gitlab:cleanup:repos # GITLAB | Cleanup | Clean repositories<br />
rake gitlab:env:check # GITLAB | Check the configuration of the environment<br />
rake gitlab:env:info # GITLAB | Show information about GitLab and its environment<br />
rake gitlab:generate_docs # GITLAB | Generate sdocs for project<br />
rake gitlab:gitlab_shell:check # GITLAB | Check the configuration of GitLab Shell<br />
rake gitlab:import:all_users_to_all_groups # GITLAB | Add all users to all groups (admin users are added as owners)<br />
rake gitlab:import:all_users_to_all_projects # GITLAB | Add all users to all projects (admin users are added as masters)<br />
rake gitlab:import:repos # GITLAB | Import bare repositories from gitlab_shell -> repos_path into GitLab project instance<br />
rake gitlab:import:user_to_groups[email] # GITLAB | Add a specific user to all groups (as a developer)<br />
rake gitlab:import:user_to_projects[email] # GITLAB | Add a specific user to all projects (as a developer)<br />
rake gitlab:satellites:create # GITLAB | Create satellite repos<br />
rake gitlab:setup # GITLAB | Setup production application<br />
rake gitlab:shell:build_missing_projects # GITLAB | Build missing projects<br />
rake gitlab:shell:install[tag,repo] # GITLAB | Install or upgrade gitlab-shell<br />
rake gitlab:shell:setup # GITLAB | Setup gitlab-shell<br />
rake gitlab:sidekiq:check # GITLAB | Check the configuration of Sidekiq<br />
rake gitlab:test # GITLAB | Run all tests<br />
rake gitlab:web_hook:add # GITLAB | Adds a web hook to the projects<br />
rake gitlab:web_hook:list # GITLAB | List web hooks<br />
rake gitlab:web_hook:rm # GITLAB | Remove a web hook from the projects<br />
rake setup # GITLAB | Setup gitlab db<br />
</nowiki>}}<br />
<br />
=== Backup and restore ===<br />
<br />
Create a backup of the gitlab system:<br />
# su - gitlab -s /bin/sh -c "cd '/usr/share/webapps/gitlab'; bundle exec rake RAILS_ENV=production gitlab:backup:create"<br />
<br />
Restore the previously created backup file {{ic|/var/lib/gitlab/backups/1556571328_2019_04_29_11.10.2_gitlab_backup.tar}}:<br />
# su - gitlab -s /bin/sh -c "cd '/usr/share/webapps/gitlab'; bundle exec rake RAILS_ENV=production gitlab:backup:restore BACKUP=1556571328_2019_04_29_11.10.2"<br />
<br />
{{Note| Backup folder is set in {{ic|config/gitlab.yml}}. GitLab backup and restore is documented [https://github.com/gitlabhq/gitlabhq/blob/master/doc/raketasks/backup_restore.md here].}}<br />
<br />
=== Enable fast SSH key lookup ===<br />
<br />
Enable Fast SSH Key Lookup as explained in this page: https://docs.gitlab.com/ee/administration/operations/fast_ssh_key_lookup.html<br />
<br />
In short, edit {{ic|/etc/ssh/sshd_config}}.<br />
<br />
Revert all changes done following this wiki (or revert {{ic|sshd_config}} from the {{Pkg|openssh}} package) and only add:<br />
<br />
AuthorizedKeysCommand /var/lib/gitlab/gitlab-shell/bin/gitlab-shell-authorized-keys-check gitlab %u %k<br />
AuthorizedKeysCommandUser gitlab<br />
<br />
Finally [[restart]] the {{ic|sshd.service}}.<br />
<br />
=== Sending mails from Gitlab via SMTP ===<br />
<br />
You might want to use a gmail (or other mail service) to send mails from your gitlab server. This avoids the need to install a mail daemon on the gitlab server.<br />
<br />
Adjust {{ic|smtp_settings.rb}} according to your mail server settings:<br />
<br />
{{hc|/usr/share/webapps/gitlab/config/initializers/smtp_settings.rb|<nowiki><br />
if Rails.env.production?<br />
Gitlab::Application.config.action_mailer.delivery_method = :smtp<br />
<br />
ActionMailer::Base.delivery_method = :smtp<br />
ActionMailer::Base.smtp_settings = {<br />
address: 'smtp.gmail.com',<br />
port: 587,<br />
domain: 'gmail.com',<br />
user_name: 'username@gmail.com',<br />
password: 'application password',<br />
authentication: 'plain',<br />
enable_starttls_auto: true<br />
}<br />
end</nowiki>}}<br />
<br />
Gmail will reject mails received this way (and send you a mail that it did). You will need to disable secure authentication (follow the link in the rejection mail) to work around this. The more secure approach is to enable two-factor authentication for username@gmail.com and to set up an application password for this configuration file.<br />
<br />
== Troubleshooting ==<br />
<br />
=== HTTPS is not green (gravatar not using https) ===<br />
<br />
Redis caches gravatar images, so if you have visited your GitLab with http, then enabled https, gravatar will load up the non-secure images. You can clear the cache by doing<br />
<br />
cd /usr/share/webapps/gitlab<br />
RAILS_ENV=production bundle exec rake cache:clear<br />
<br />
as the gitlab user.<br />
<br />
=== Errors after updating ===<br />
<br />
After updating the package from the AUR, the database migrations and asset updates will sometimes fail. These steps may resolve the issue, if a simple reboot does not.<br />
<br />
First, move to the gitlab installation directory.<br />
# cd /usr/share/webapps/gitlab<br />
<br />
If every gitlab page gives a 500 error, then the database migrations and the assets are probably stale. If not, skip this step.<br />
# su - gitlab -s /bin/sh -c "cd '/usr/share/webapps/gitlab'; bundle exec rake db:migrate RAILS_ENV=production"<br />
<br />
If gitlab is constantly waiting for the deployment to finish, then the assets have probably not been recompiled.<br />
# su - gitlab -s /bin/sh -c "cd '/usr/share/webapps/gitlab'; bundle exec rake gitlab:assets:clean gitlab:assets:compile cache:clear RAILS_ENV=production"<br />
<br />
Finally, restart the gitlab services and test your site.<br />
# systemctl restart gitlab-puma gitlab-sidekiq gitlab-workhorse<br />
<br />
=== GitLab Puma cannot access non-default repositories directory ===<br />
<br />
If a custom repository storage directory is set in {{ic|/home}}, disable the {{ic|1=ProtectHome=true}} parameter in the {{ic|gitlab-puma.service}} (see [[systemd#Drop-in files]] and the [https://forum.gitlab.com/t/cannot-change-repositores-location/9634/2 relevant forum thread on gitlab.com]).<br />
<br />
=== Failed to connect to Gitaly ===<br />
<br />
Sometimes, the Gitaly service will not get started, leaving GitLab unable to connect to Gitaly. The solution is simple:<br />
# systemctl start gitlab-gitaly<br />
<br />
=== Failed to connect via SSH ===<br />
If git operations (-T, pull, clone, etc.) fails using ssh try changing the shell:<br />
<br />
# usermod -s /usr/share/webapps/gitlab-shell/bin/gitlab-shell-ruby gitlab<br />
<br />
=== CSS or styles issue ===<br />
<br />
If you have any issues with styles and CSS not working, you may try to edit {{ic|/usr/share/webapps/gitlab/config/environments/production.rb}} and change:<br />
<br />
# Disable Rails's static asset server (Apache or nginx will already do this)<br />
config.public_file_server.enabled = false<br />
<br />
to:<br />
<br />
# Disable Rails's static asset server (Apache or nginx will already do this)<br />
config.public_file_server.enabled = true<br />
<br />
=== The server does not support push options ===<br />
<br />
If you get an error like {{ic|fatal: the receiving end does not support push options}} you might need to enable it for the GitLab Git user ({{ic|gitlab}}) on the server. This can be done in the gitconfig:<br />
<br />
{{hc|/etc/webapps/gitlab-shell/.gitconfig|2=<br />
[receive]<br />
advertisePushOptions = true<br />
}}<br />
<br />
Alternatively one can set this with: {{ic|sudo -u gitlab -H git config --global receive.advertisePushOptions true}}<br />
<br />
== See also ==<br />
<br />
*[https://docs.gitlab.com/ce/install/installation.html Official installation documentation]<br />
*[https://gitlab.com/gitlab-org/gitlab-recipes GitLab recipes with further documentation on running it with several web servers]<br />
*[https://gitlab.com/gitlab-org/gitlab-ce GitLab source code]</div>Hashworkshttps://wiki.archlinux.org/index.php?title=GitLab&diff=616700GitLab2020-05-28T15:19:24Z<p>Hashworks: /* Fix intend */</p>
<hr />
<div>[[Category:Git web interfaces]]<br />
[[ja:Gitlab]]<br />
[[zh-hans:GitLab]]<br />
{{Related articles start}}<br />
{{Related|Gitolite}}<br />
{{Related|Ruby on Rails}}<br />
{{Related articles end}}<br />
<br />
From [https://about.gitlab.com/ GitLab's homepage]:<br />
<br />
:GitLab offers git repository management, code reviews, issue tracking, activity feeds and wikis. Enterprises install GitLab on-premise and connect it with LDAP and Active Directory servers for secure authentication and authorization. A single GitLab server can handle more than 25,000 users but it is also possible to create a high availability setup with multiple active servers.<br />
<br />
An example live version can be found at [https://gitlab.com/ GitLab.com].<br />
<br />
== Installation ==<br />
<br />
{{Note|This article covers installing and configuring GitLab without HTTPS at first. If needed, see [[#Advanced configuration]] to set up SSL.}}<br />
<br />
GitLab requires [[Redis]] and a database backend. If you plan to run it on the same machine, first install [[PostgreSQL]].<br />
<br />
[[Install]] the {{pkg|gitlab}} package.<br />
<br />
In order to receive mail notifications, a mail server must be installed and configured. See [[:Category:Mail server]] for details.<br />
<br />
== Configuration ==<br />
<br />
=== Preliminary Notes ===<br />
<br />
GitLab is composed of multiple components, see the [https://docs.gitlab.com/ce/development/architecture.html architecture overview page].<br />
<br />
The {{pkg|gitlab}} package installs GitLab's files in a manner that more closely follow standard Linux conventions:<br />
<br />
{| class="wikitable"<br />
! Description <br />
! [https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/installation.md GitLab's Official] <br />
! {{pkg|gitlab}} <br />
|----------------------------------------------------------<br />
| User (Home Directory)<br />
| {{ic|git}} ({{ic|/home/git}})<br />
| {{ic|gitlab}} ({{ic|/var/lib/gitlab}})<br />
|----------------------------------------------------------<br />
| Configuration File GitShell<br />
| {{ic|/home/git/gitlab-shell/config.yml}}<br />
| {{ic|/etc/webapps/gitlab-shell/config.yml}}<br />
|----------------------------------------------------------<br />
| Configuration File GitLab<br />
| {{ic|/home/git/gitlab/config/gitlab.yml}}<br />
| {{ic|/etc/webapps/gitlab/gitlab.yml}}<br />
|----------------------------------------------------------<br />
| Logs<br />
| {{ic|/home/git/log}}<br />
| {{ic|/var/log/gitlab}}<br />
|----------------------------------------------------------<br />
| Unix socket files / PID files<br />
| {{ic|/home/git/sockets}}<br />
| {{ic|/run/gitlab}}<br />
|}<br />
<br />
{{tip|If you are familiar with the [[Arch Build System]] you can edit the PKGBUILD and relevant files to change gitlab's home directory to a place of your liking.}}<br />
<br />
===GitLab===<br />
Edit {{ic|/etc/webapps/gitlab/gitlab.yml}} and setup at least the following parameters:<br />
<br />
{{Note|The {{ic|hostname}} and {{ic|port}} are used for the {{ic|git clone http://''hostname:port''}} as example.}}<br />
<br />
'''Hostname:''' In the {{ic|gitlab:}} section set {{ic|host:}} - replacing {{ic|localhost}} to {{ic|''yourdomain.com''}} ('''note:''' no 'http://' or trailing slash) - into your fully qualified domain name.<br />
<br />
'''Port:''' {{ic|port:}} can be confusing. This is not the port that the GitLab server (Puma) runs on; it is the port that users will initially access through in their browser. Basically, if you intend for users to visit {{ic|''yourdomain.com''}} in their browser, without appending a port number to the domain name, leave {{ic|port:}} as {{ic|80}}. If you intend your users to type something like {{ic|''yourdomain.com:3425''}} into their browsers, then you would set {{ic|port:}} to {{ic|3425}}. You will also have to '''configure your webserver''' to listen on that port.<br />
<br />
'''Timezone (optional):''' The {{ic|time_zone:}} parameter is optional, but may be useful to force the zone of GitLab applications.<br />
<br />
=== Custom port for Puma ===<br />
<br />
GitLab Puma is the main component which processes most of the user requests. By default, it listens on the {{ic|/run/gitlab/gitlab.socket}} UNIX socket which can be changed in the {{ic|/etc/webapps/gitlab/puma.rb}} file.<br />
<br />
To configure Puma to listen on a TCP port as well as UNIX socket:<br />
<br />
{{hc|/etc/webapps/gitlab/puma.rb|2=<br />
bind 'unix:///run/gitlab/gitlab.socket'<br />
bind 'tcp://127.0.0.1:8080'<br />
}}<br />
<br />
If the Puma address is changed, the configuration of other components which communicate with Puma have to be updated as well:<br />
<br />
* For GitLab Shell, update the {{ic|gitlab_url}} variable in {{ic|/etc/webapps/gitlab-shell/config.yml}} and {{ic|/etc/gitlab-gitaly/config.toml}}.<br />
: {{Tip|According to the comment in the config file, UNIX socket path can be specified with URL-escaped slashes (i.e. {{ic|http+unix://%2Frun%2Fgitlab%2Fgitlab.socket}} for the default {{ic|/run/gitlab/gitlab.socket}}). Additionally, un-escaped slashes can be used to specify the [https://docs.gitlab.com/ce/install/relative_url.html relative URL root] (e.g. {{ic|/gitlab}}).}}<br />
* For GitLab Workhorse, [[edit]] the {{ic|gitlab-workhorse.service}} and update the {{ic|-authBackend}} option.<br />
<br />
=== Secret strings ===<br />
<br />
Make sure that the files {{ic|/etc/webapps/gitlab/secret}} and {{ic|/etc/webapps/gitlab-shell/secret}} files contain something. Their content should be kept secret because they are used for the generation of authentication tokens etc.<br />
<br />
For example, random strings can be generated with the following commands:<br />
<br />
# hexdump -v -n 64 -e '1/1 "%02x"' /dev/urandom > /etc/webapps/gitlab/secret<br />
# chown root:gitlab /etc/webapps/gitlab/secret<br />
# chmod 640 /etc/webapps/gitlab/secret<br />
<br />
# hexdump -v -n 64 -e '1/1 "%02x"' /dev/urandom > /etc/webapps/gitlab-shell/secret<br />
# chown root:gitlab /etc/webapps/gitlab-shell/secret<br />
# chmod 640 /etc/webapps/gitlab-shell/secret<br />
<br />
Also fill in (new) secret strings for {{ic|secrets.yml}}:<br />
<br />
{{hc|/etc/webapps/gitlab/secrets.yml|<br />
production:<br />
secret_key_base: ''secret''<br />
db_key_base: ''secret''<br />
}}<br />
<br />
===Redis===<br />
<br />
In order to provide sufficient performance you will need a cache database. [[Redis#Installation|Install]] and [[Redis#Configuration|configure]] a Redis instance, being careful to the section dedicated to listening via a socket.<br />
<br />
Add the {{ic|gitlab}} user to the {{ic|redis}} [[user group]] and update this configuration file:<br />
<br />
{{hc|/etc/webapps/gitlab/resque.yml|2=<br />
development:<br />
url: unix:/run/redis/redis.sock<br />
test:<br />
url: unix:/run/redis/redis.sock<br />
production:<br />
url: unix:/run/redis/redis.sock<br />
}}<br />
<br />
=== PostgreSQL database ===<br />
<br />
A [[PostgreSQL]] database will be required before Gitlab can be run.<br />
<br />
Login to PostgreSQL and create the {{ic|gitlabhq_production}} database along with its user. Remember to change {{ic|your_username_here}} and {{ic|your_password_here}} to the real values:<br />
<br />
# psql -d template1<br />
<br />
{{bc|1=<br />
template1=# CREATE USER your_username_here WITH PASSWORD 'your_password_here';<br />
template1=# ALTER USER your_username_here SUPERUSER;<br />
template1=# CREATE DATABASE gitlabhq_production OWNER your_username_here;<br />
template1=# \q<br />
}}<br />
<br />
{{Note|The reason for creating the user as a superuser is that GitLab is trying to be "smart" and install extensions (not just create them in its own userspace). And this is only allowed by superusers in Postgresql.}}<br />
<br />
Try connecting to the new database with the new user to verify it works:<br />
<br />
# psql -d gitlabhq_production<br />
<br />
Copy the PostgreSQL template file before configuring it:<br />
<br />
# cp /usr/share/doc/gitlab/database.yml.postgresql /etc/webapps/gitlab/database.yml<br />
<br />
Open the new {{ic|/etc/webapps/gitlab/database.yml}} and set the values for {{ic|username:}} and {{ic|password:}}. For example:<br />
<br />
{{hc|/etc/webapps/gitlab/database.yml|<br />
#<br />
# PRODUCTION<br />
#<br />
production:<br />
adapter: postgresql<br />
encoding: unicode<br />
database: gitlabhq_production<br />
pool: 10<br />
username: your_username_here<br />
password: "your_password_here"<br />
# host: localhost<br />
# port: 5432<br />
socket: /run/postgresql/.s.PGSQL.5432<br />
...<br />
}}<br />
<br />
For our purposes (unless you know what you are doing), you do not need to worry about configuring the other databases listed in {{ic|/etc/webapps/gitlab/database.yml}}. We only need to set up the production database to get GitLab working.<br />
<br />
=== Firewall ===<br />
<br />
If you want to give direct access to your Gitlab installation through an [[iptables]] firewall, you may need to adjust the port and the network address:<br />
<br />
# iptables -A tcp_inbound -p TCP -s '''192.168.1.0/24''' --destination-port '''80''' -j ACCEPT<br />
<br />
To enable API-access:<br />
<br />
# iptables -A tcp_inbound -p TCP -s '''192.168.1.0/24''' --destination-port '''8080''' -j ACCEPT<br />
<br />
If you are behind a router, do not forget to forward this port to the running GitLab server host, if you want to allow WAN-access.<br />
<br />
=== Initialize Gitlab database ===<br />
<br />
Start the [[Redis]] server and the {{ic|gitlab-gitaly.service}} before initializing the database.<br />
<br />
Initialize the database and activate advanced features:<br />
<br />
# su - gitlab -s /bin/sh -c "cd '/usr/share/webapps/gitlab'; EXECJS_RUNTIME=Disabled bundle exec rake gitlab:setup RAILS_ENV=production"<br />
<br />
Finally run the following commands to check your installation:<br />
<br />
# su - gitlab -s /bin/sh -c "cd '/usr/share/webapps/gitlab'; EXECJS_RUNTIME=Disabled bundle exec rake gitlab:env:info RAILS_ENV=production"<br />
# su - gitlab -s /bin/sh -c "cd '/usr/share/webapps/gitlab'; EXECJS_RUNTIME=Disabled bundle exec rake gitlab:check RAILS_ENV=production"<br />
<br />
{{note|<br />
*The ''gitlab:env:info'' and ''gitlab:check'' commands will show a fatal error related to git. This is OK.<br />
*The ''gitlab:check'' will complain about missing initscripts. This is nothing to worry about, as [[systemd]] service files are used instead (which GitLab does not recognize).<br />
}}<br />
<br />
=== Adjust modifier bits ===<br />
(The gitlab check will not pass if the user and group ownership is not configured properly)<br />
<br />
# chmod -R ug+rwX,o-rwx /var/lib/gitlab/repositories/<br />
# chmod -R ug-s /var/lib/gitlab/repositories<br />
# find /var/lib/gitlab/repositories/ -type d -print0 | xargs -0 chmod g+s<br />
<br />
== Start and test GitLab ==<br />
<br />
Make sure [[PostgreSQL]] and [[Redis]] are running and setup correctly.<br />
<br />
Then [[start]]/[[enable]] {{ic|gitlab.target}}.<br />
<br />
Now test your GitLab instance by visiting http://localhost:8080; you should be prompted to create a password:<br />
<br />
{{bc|<br />
username: root<br />
password: You will be prompted to create one on your first visit.<br />
}}<br />
<br />
To access GitLab from an outside network, the upstream documentation recommends to use an established web server as a proxy. See [[#Web server configuration]] for details. <br />
<br />
See [[#Troubleshooting]] and log files inside the {{ic|/usr/share/webapps/gitlab/log/}} directory for troubleshooting.<br />
<br />
== Upgrade database on updates ==<br />
After updating the {{Pkg|gitlab}} package, it is required to upgrade the database:<br />
# su - gitlab -s /bin/sh -c "cd '/usr/share/webapps/gitlab'; EXECJS_RUNTIME=Disabled bundle exec rake db:migrate RAILS_ENV=production"<br />
<br />
Afterwards, restart gitlab-related services:<br />
# systemctl daemon-reload<br />
# systemctl restart gitlab-sidekiq gitlab-puma gitlab-workhorse gitlab-gitaly<br />
<br />
== Advanced configuration ==<br />
<br />
=== Basic SSH ===<br />
After completing the basic installation, set up SSH access for users. Configuration for [[OpenSSH]] is described below. [[SSH#Implementations|Other SSH clients and servers]] will require different modifications.<br />
<br />
For tips on adding user SSH keys, the process is well-documented on the [https://docs.gitlab.com/ee/ssh/ GitLab] website. You can check the administrator logs at {{ic|/var/lib/gitlab/log/gitlab-shell.log}} to confirm user SSH keys are being submitted properly. Behind the scenes, GitLab adds these keys to its ''authorized_keys'' file in {{ic|/var/lib/gitlab/.ssh/authorized_keys}}.<br />
<br />
The common method of testing keys (ex: {{ic|<nowiki>$ ssh -T git@</nowiki>''YOUR_SERVER''}}) requires a bit of extra configuration to work correctly. The user configured in {{ic|/etc/webapps/gitlab/gitlab.yml}} (default user: {{ic|gitlab}}) must be added to the server's sshd configuration file, in addition to a handful of other changes:<br />
{{hc|/etc/ssh/sshd_config|<br />
PubkeyAuthentication yes<br />
AuthorizedKeysFile %h/.ssh/authorized_keys<br />
}}<br />
<br />
If your {{ic|/etc/ssh/sshd_config}} contains {{ic|AllowUsers}} option then please add {{ic|gitlab}} user to the list:<br />
{{hc|/etc/ssh/sshd_config|<br />
AllowUsers gitlab <i>foobar</i><br />
}}<br />
<br />
After updating the configuration file, restart the ssh daemon:<br />
# systemctl restart sshd<br />
<br />
Test user SSH keys (optionally add -v to see extra information):<br />
<nowiki>$ ssh -T </nowiki>'''gitlab'''@''YOUR_SERVER''<br />
<br />
=== Custom SSH connection ===<br />
If you are running SSH on a non-standard port, you must change the GitLab user's SSH config:<br />
{{hc|/var/lib/gitlab/.ssh/config|2=<br />
host localhost # Give your setup a name (here: override localhost)<br />
user gitlab # Your remote git user<br />
port 2222 # Your port number<br />
hostname 127.0.0.1; # Your server name or IP<br />
}}<br />
<br />
You also need to change the corresponding options (e.g. ssh_user, ssh_host, admin_uri) in the {{ic|/etc/webapps/gitlab/gitlab.yml}} file.<br />
<br />
=== HTTPS/SSL ===<br />
<br />
==== Change GitLab configs ====<br />
Modify {{ic|/etc/webapps/gitlab/shell.yml}} so the url to your GitLab site starts with {{ic|https://}}.<br />
Modify {{ic|/etc/webapps/gitlab/gitlab.yml}} so that {{ic|https:}} setting is set to {{ic|true}}.<br />
<br />
See also [[Apache HTTP Server#TLS]] and [[Let’s Encrypt]].<br />
<br />
==== Let's Encrypt ====<br />
<br />
To validate your URL, the Let's Encrypt process will try to access your gitlab server with something like {{ic|<nowiki>https://gitlab.</nowiki>''YOUR_SERVER_FQDN''/.well-known/acme-challenge/''A_LONG_ID''}}. But, due to gitlab configuration, every request to {{ic|gitlab.''YOUR_SERVER_FQDN''}} will be redirected to a proxy (gitlab-workhorse) that will not be able to deal with this URL.<br />
<br />
To bypass this issue, you can use the Let's Encrypt webroot configuration, setting the webroot at {{ic|/srv/http/letsencrypt/}}.<br />
<br />
Additionally, force the Let's Encrypt request for gitlab to be redirected to this webroot by adding the following:<br />
<br />
{{hc|/etc/http/conf/extra/gitlab.conf|<br />
Alias "/.well-known" "/srv/http/letsencrypt/.well-known"<br />
RewriteCond %{REQUEST_URI} !/\.well-known/.*<br />
}}<br />
<br />
===Web server configuration===<br />
If you want to integrate GitLab into a running web server instead of using its build-in HTTP server Puma, follow these instructions.<br />
<br />
==== Node.js ====<br />
You can easily set up an HTTP proxy on port 443 to proxy traffic to the GitLab application on port 8080 using http-master for Node.js. After you have created your domain's OpenSSL keys and have gotten you CA certificate (or self signed it), then go to https://github.com/CodeCharmLtd/http-master to learn how easy it is to proxy requests to GitLab using HTTPS. http-master is built on top of [https://github.com/nodejitsu/node-http-proxy node-http-proxy].<br />
<br />
==== Nginx ====<br />
<br />
See [[Nginx#Configuration]] for basic ''nginx'' configuration and [[Nginx#TLS]] for enabling HTTPS. The sample in this section also assumes that server blocks are managed with [[Nginx#Managing server entries]].<br />
<br />
Create and edit the configuration based on the following snippet. See the [https://gitlab.com/gitlab-org/gitlab-ce/tree/master/lib/support/nginx upstream GitLab repository] for more examples.<br />
<br />
{{hc|/etc/nginx/servers-available/gitlab|<nowiki><br />
upstream gitlab-workhorse {<br />
server unix:/run/gitlab/gitlab-workhorse.socket fail_timeout=0;<br />
}<br />
<br />
server {<br />
listen 80; # IPv4 HTTP<br />
#listen 443 ssl http2; # uncomment to enable IPv4 HTTPS + HTTP/2<br />
#listen [::]:80; # uncomment to enable IPv6 HTTP<br />
#listen [::]:443 ssl http2; # uncomment to enable IPv6 HTTPS + HTTP/2<br />
server_name example.com;<br />
<br />
#ssl_certificate ssl/example.com.crt;<br />
#ssl_certificate_key ssl/example.com.key;<br />
<br />
location / {<br />
# unlimited upload size in nginx (so the setting in GitLab applies)<br />
client_max_body_size 0;<br />
<br />
# proxy timeout should match the timeout value set in /etc/webapps/gitlab/puma.rb<br />
proxy_read_timeout 60;<br />
proxy_connect_timeout 60;<br />
proxy_redirect off;<br />
<br />
proxy_set_header Host $http_host;<br />
proxy_set_header X-Real-IP $remote_addr;<br />
proxy_set_header X-Forwarded-Ssl on;<br />
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br />
proxy_set_header X-Forwarded-Proto $scheme;<br />
<br />
proxy_pass http://gitlab-workhorse;<br />
}<br />
<br />
error_page 404 /404.html;<br />
error_page 422 /422.html;<br />
error_page 500 /500.html;<br />
error_page 502 /502.html;<br />
error_page 503 /503.html;<br />
location ~ ^/(404|422|500|502|503)\.html$ {<br />
root /usr/share/webapps/gitlab/public;<br />
internal;<br />
}<br />
}<br />
</nowiki>}}<br />
<br />
==== Apache ====<br />
<br />
Install and configure the [[Apache HTTP Server]]. You can use these [https://gitlab.com/gitlab-org/gitlab-recipes/tree/master/web-server/apache upstream recipes] to get started with the configuration file for GitLab's virtual host.<br />
<br />
For the SSL configuration see [[Apache HTTP Server#TLS]]. If you do not need it, remove it. Notice that the SSL virtual host needs a specific IP instead of generic. Also if you set a custom port for Puma, do not forget to set it at the {{ic|BalanceMember}} line.<br />
<br />
==Useful tips==<br />
<br />
===Rake tasks===<br />
A number of setup/maintenance/etc tasks are available through rake. To list them, go to Gitlab's home directory:<br />
# cd /usr/share/webapps/gitlab<br />
<br />
and run:<br />
{{hc|<nowiki># rake -T | grep gitlab</nowiki>|<nowiki><br />
rake gitlab:app:check # GITLAB | Check the configuration of the GitLab Rails app<br />
rake gitlab:backup:create # GITLAB | Create a backup of the GitLab system<br />
rake gitlab:backup:restore # GITLAB | Restore a previously created backup<br />
rake gitlab:check # GITLAB | Check the configuration of GitLab and its environment<br />
rake gitlab:cleanup:block_removed_ldap_users # GITLAB | Cleanup | Block users that have been removed in LDAP<br />
rake gitlab:cleanup:dirs # GITLAB | Cleanup | Clean namespaces<br />
rake gitlab:cleanup:repos # GITLAB | Cleanup | Clean repositories<br />
rake gitlab:env:check # GITLAB | Check the configuration of the environment<br />
rake gitlab:env:info # GITLAB | Show information about GitLab and its environment<br />
rake gitlab:generate_docs # GITLAB | Generate sdocs for project<br />
rake gitlab:gitlab_shell:check # GITLAB | Check the configuration of GitLab Shell<br />
rake gitlab:import:all_users_to_all_groups # GITLAB | Add all users to all groups (admin users are added as owners)<br />
rake gitlab:import:all_users_to_all_projects # GITLAB | Add all users to all projects (admin users are added as masters)<br />
rake gitlab:import:repos # GITLAB | Import bare repositories from gitlab_shell -> repos_path into GitLab project instance<br />
rake gitlab:import:user_to_groups[email] # GITLAB | Add a specific user to all groups (as a developer)<br />
rake gitlab:import:user_to_projects[email] # GITLAB | Add a specific user to all projects (as a developer)<br />
rake gitlab:satellites:create # GITLAB | Create satellite repos<br />
rake gitlab:setup # GITLAB | Setup production application<br />
rake gitlab:shell:build_missing_projects # GITLAB | Build missing projects<br />
rake gitlab:shell:install[tag,repo] # GITLAB | Install or upgrade gitlab-shell<br />
rake gitlab:shell:setup # GITLAB | Setup gitlab-shell<br />
rake gitlab:sidekiq:check # GITLAB | Check the configuration of Sidekiq<br />
rake gitlab:test # GITLAB | Run all tests<br />
rake gitlab:web_hook:add # GITLAB | Adds a web hook to the projects<br />
rake gitlab:web_hook:list # GITLAB | List web hooks<br />
rake gitlab:web_hook:rm # GITLAB | Remove a web hook from the projects<br />
rake setup # GITLAB | Setup gitlab db<br />
</nowiki>}}<br />
<br />
===Backup and restore===<br />
<br />
Create a backup of the gitlab system:<br />
# su - gitlab -s /bin/sh -c "cd '/usr/share/webapps/gitlab'; bundle exec rake RAILS_ENV=production gitlab:backup:create"<br />
<br />
Restore the previously created backup file {{ic|/var/lib/gitlab/backups/1556571328_2019_04_29_11.10.2_gitlab_backup.tar}}:<br />
# su - gitlab -s /bin/sh -c "cd '/usr/share/webapps/gitlab'; bundle exec rake RAILS_ENV=production gitlab:backup:restore BACKUP=1556571328_2019_04_29_11.10.2"<br />
<br />
{{Note| Backup folder is set in {{ic|config/gitlab.yml}}. GitLab backup and restore is documented [https://github.com/gitlabhq/gitlabhq/blob/master/doc/raketasks/backup_restore.md here].}}<br />
<br />
=== Enable fast SSH key lookup ===<br />
<br />
Enable Fast SSH Key Lookup as explained in this page: https://docs.gitlab.com/ee/administration/operations/fast_ssh_key_lookup.html<br />
<br />
In short, edit {{ic|/etc/ssh/sshd_config}}.<br />
<br />
Revert all changes done following this wiki (or revert {{ic|sshd_config}} from the {{Pkg|openssh}} package) and only add:<br />
<br />
AuthorizedKeysCommand /var/lib/gitlab/gitlab-shell/bin/gitlab-shell-authorized-keys-check gitlab %u %k<br />
AuthorizedKeysCommandUser gitlab<br />
<br />
Finally [[restart]] the {{ic|sshd.service}}.<br />
<br />
===Sending mails from Gitlab via SMTP===<br />
<br />
You might want to use a gmail (or other mail service) to send mails from your gitlab server. This avoids the need to install a mail daemon on the gitlab server.<br />
<br />
Adjust {{ic|smtp_settings.rb}} according to your mail server settings:<br />
<br />
{{hc|/usr/share/webapps/gitlab/config/initializers/smtp_settings.rb|<nowiki><br />
if Rails.env.production?<br />
Gitlab::Application.config.action_mailer.delivery_method = :smtp<br />
<br />
ActionMailer::Base.delivery_method = :smtp<br />
ActionMailer::Base.smtp_settings = {<br />
address: 'smtp.gmail.com',<br />
port: 587,<br />
domain: 'gmail.com',<br />
user_name: 'username@gmail.com',<br />
password: 'application password',<br />
authentication: 'plain',<br />
enable_starttls_auto: true<br />
}<br />
end</nowiki>}}<br />
<br />
Gmail will reject mails received this way (and send you a mail that it did). You will need to disable secure authentication (follow the link in the rejection mail) to work around this. The more secure approach is to enable two-factor authentication for username@gmail.com and to set up an application password for this configuration file.<br />
<br />
==Troubleshooting==<br />
<br />
=== HTTPS is not green (gravatar not using https) ===<br />
Redis caches gravatar images, so if you have visited your GitLab with http, then enabled https, gravatar will load up the non-secure images. You can clear the cache by doing<br />
<br />
cd /usr/share/webapps/gitlab<br />
RAILS_ENV=production bundle exec rake cache:clear<br />
<br />
as the gitlab user.<br />
<br />
=== Errors after updating ===<br />
After updating the package from the AUR, the database migrations and asset updates will sometimes fail. These steps may resolve the issue, if a simple reboot does not.<br />
<br />
First, move to the gitlab installation directory.<br />
# cd /usr/share/webapps/gitlab<br />
<br />
If every gitlab page gives a 500 error, then the database migrations and the assets are probably stale. If not, skip this step.<br />
# su - gitlab -s /bin/sh -c "cd '/usr/share/webapps/gitlab'; bundle exec rake db:migrate RAILS_ENV=production"<br />
<br />
If gitlab is constantly waiting for the deployment to finish, then the assets have probably not been recompiled.<br />
# su - gitlab -s /bin/sh -c "cd '/usr/share/webapps/gitlab'; bundle exec rake gitlab:assets:clean gitlab:assets:compile cache:clear RAILS_ENV=production"<br />
<br />
Finally, restart the gitlab services and test your site.<br />
# systemctl restart gitlab-puma gitlab-sidekiq gitlab-workhorse<br />
<br />
=== GitLab Puma cannot access non-default repositories directory ===<br />
<br />
If a custom repository storage directory is set in {{ic|/home}}, disable the {{ic|1=ProtectHome=true}} parameter in the {{ic|gitlab-puma.service}} (see [[systemd#Drop-in files]] and the [https://forum.gitlab.com/t/cannot-change-repositores-location/9634/2 relevant forum thread on gitlab.com]).<br />
<br />
=== Failed to connect to Gitaly ===<br />
<br />
Sometimes, the Gitaly service will not get started, leaving GitLab unable to connect to Gitaly. The solution is simple:<br />
# systemctl start gitlab-gitaly<br />
<br />
=== Failed to connect via SSH ===<br />
If git operations (-T, pull, clone, etc.) fails using ssh try changing the shell:<br />
<br />
# usermod -s /usr/share/webapps/gitlab-shell/bin/gitlab-shell-ruby gitlab<br />
<br />
=== CSS or styles issue ===<br />
<br />
If you have any issues with styles and CSS not working, you may try to edit {{ic|/usr/share/webapps/gitlab/config/environments/production.rb}} and change:<br />
<br />
# Disable Rails's static asset server (Apache or nginx will already do this)<br />
config.public_file_server.enabled = false<br />
<br />
to:<br />
<br />
# Disable Rails's static asset server (Apache or nginx will already do this)<br />
config.public_file_server.enabled = true<br />
<br />
=== The server does not support push options ===<br />
<br />
If you get an error like {{ic|fatal: the receiving end does not support push options}} you might need to enable it for the GitLab Git user ({{ic|gitlab}}) on the server. This can be done by editing {{ic|/var/lib/gitlab/.gitconfig}}:<br />
[receive]<br />
advertisepushoptions = true<br />
<br />
==See also==<br />
*[https://docs.gitlab.com/ce/install/installation.html Official installation documentation]<br />
*[https://gitlab.com/gitlab-org/gitlab-recipes GitLab recipes with further documentation on running it with several web servers]<br />
*[https://gitlab.com/gitlab-org/gitlab-ce GitLab source code]</div>Hashworkshttps://wiki.archlinux.org/index.php?title=GitLab&diff=616697GitLab2020-05-28T15:18:35Z<p>Hashworks: /* Add help about push options */</p>
<hr />
<div>[[Category:Git web interfaces]]<br />
[[ja:Gitlab]]<br />
[[zh-hans:GitLab]]<br />
{{Related articles start}}<br />
{{Related|Gitolite}}<br />
{{Related|Ruby on Rails}}<br />
{{Related articles end}}<br />
<br />
From [https://about.gitlab.com/ GitLab's homepage]:<br />
<br />
:GitLab offers git repository management, code reviews, issue tracking, activity feeds and wikis. Enterprises install GitLab on-premise and connect it with LDAP and Active Directory servers for secure authentication and authorization. A single GitLab server can handle more than 25,000 users but it is also possible to create a high availability setup with multiple active servers.<br />
<br />
An example live version can be found at [https://gitlab.com/ GitLab.com].<br />
<br />
== Installation ==<br />
<br />
{{Note|This article covers installing and configuring GitLab without HTTPS at first. If needed, see [[#Advanced configuration]] to set up SSL.}}<br />
<br />
GitLab requires [[Redis]] and a database backend. If you plan to run it on the same machine, first install [[PostgreSQL]].<br />
<br />
[[Install]] the {{pkg|gitlab}} package.<br />
<br />
In order to receive mail notifications, a mail server must be installed and configured. See [[:Category:Mail server]] for details.<br />
<br />
== Configuration ==<br />
<br />
=== Preliminary Notes ===<br />
<br />
GitLab is composed of multiple components, see the [https://docs.gitlab.com/ce/development/architecture.html architecture overview page].<br />
<br />
The {{pkg|gitlab}} package installs GitLab's files in a manner that more closely follow standard Linux conventions:<br />
<br />
{| class="wikitable"<br />
! Description <br />
! [https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/installation.md GitLab's Official] <br />
! {{pkg|gitlab}} <br />
|----------------------------------------------------------<br />
| User (Home Directory)<br />
| {{ic|git}} ({{ic|/home/git}})<br />
| {{ic|gitlab}} ({{ic|/var/lib/gitlab}})<br />
|----------------------------------------------------------<br />
| Configuration File GitShell<br />
| {{ic|/home/git/gitlab-shell/config.yml}}<br />
| {{ic|/etc/webapps/gitlab-shell/config.yml}}<br />
|----------------------------------------------------------<br />
| Configuration File GitLab<br />
| {{ic|/home/git/gitlab/config/gitlab.yml}}<br />
| {{ic|/etc/webapps/gitlab/gitlab.yml}}<br />
|----------------------------------------------------------<br />
| Logs<br />
| {{ic|/home/git/log}}<br />
| {{ic|/var/log/gitlab}}<br />
|----------------------------------------------------------<br />
| Unix socket files / PID files<br />
| {{ic|/home/git/sockets}}<br />
| {{ic|/run/gitlab}}<br />
|}<br />
<br />
{{tip|If you are familiar with the [[Arch Build System]] you can edit the PKGBUILD and relevant files to change gitlab's home directory to a place of your liking.}}<br />
<br />
===GitLab===<br />
Edit {{ic|/etc/webapps/gitlab/gitlab.yml}} and setup at least the following parameters:<br />
<br />
{{Note|The {{ic|hostname}} and {{ic|port}} are used for the {{ic|git clone http://''hostname:port''}} as example.}}<br />
<br />
'''Hostname:''' In the {{ic|gitlab:}} section set {{ic|host:}} - replacing {{ic|localhost}} to {{ic|''yourdomain.com''}} ('''note:''' no 'http://' or trailing slash) - into your fully qualified domain name.<br />
<br />
'''Port:''' {{ic|port:}} can be confusing. This is not the port that the GitLab server (Puma) runs on; it is the port that users will initially access through in their browser. Basically, if you intend for users to visit {{ic|''yourdomain.com''}} in their browser, without appending a port number to the domain name, leave {{ic|port:}} as {{ic|80}}. If you intend your users to type something like {{ic|''yourdomain.com:3425''}} into their browsers, then you would set {{ic|port:}} to {{ic|3425}}. You will also have to '''configure your webserver''' to listen on that port.<br />
<br />
'''Timezone (optional):''' The {{ic|time_zone:}} parameter is optional, but may be useful to force the zone of GitLab applications.<br />
<br />
=== Custom port for Puma ===<br />
<br />
GitLab Puma is the main component which processes most of the user requests. By default, it listens on the {{ic|/run/gitlab/gitlab.socket}} UNIX socket which can be changed in the {{ic|/etc/webapps/gitlab/puma.rb}} file.<br />
<br />
To configure Puma to listen on a TCP port as well as UNIX socket:<br />
<br />
{{hc|/etc/webapps/gitlab/puma.rb|2=<br />
bind 'unix:///run/gitlab/gitlab.socket'<br />
bind 'tcp://127.0.0.1:8080'<br />
}}<br />
<br />
If the Puma address is changed, the configuration of other components which communicate with Puma have to be updated as well:<br />
<br />
* For GitLab Shell, update the {{ic|gitlab_url}} variable in {{ic|/etc/webapps/gitlab-shell/config.yml}} and {{ic|/etc/gitlab-gitaly/config.toml}}.<br />
: {{Tip|According to the comment in the config file, UNIX socket path can be specified with URL-escaped slashes (i.e. {{ic|http+unix://%2Frun%2Fgitlab%2Fgitlab.socket}} for the default {{ic|/run/gitlab/gitlab.socket}}). Additionally, un-escaped slashes can be used to specify the [https://docs.gitlab.com/ce/install/relative_url.html relative URL root] (e.g. {{ic|/gitlab}}).}}<br />
* For GitLab Workhorse, [[edit]] the {{ic|gitlab-workhorse.service}} and update the {{ic|-authBackend}} option.<br />
<br />
=== Secret strings ===<br />
<br />
Make sure that the files {{ic|/etc/webapps/gitlab/secret}} and {{ic|/etc/webapps/gitlab-shell/secret}} files contain something. Their content should be kept secret because they are used for the generation of authentication tokens etc.<br />
<br />
For example, random strings can be generated with the following commands:<br />
<br />
# hexdump -v -n 64 -e '1/1 "%02x"' /dev/urandom > /etc/webapps/gitlab/secret<br />
# chown root:gitlab /etc/webapps/gitlab/secret<br />
# chmod 640 /etc/webapps/gitlab/secret<br />
<br />
# hexdump -v -n 64 -e '1/1 "%02x"' /dev/urandom > /etc/webapps/gitlab-shell/secret<br />
# chown root:gitlab /etc/webapps/gitlab-shell/secret<br />
# chmod 640 /etc/webapps/gitlab-shell/secret<br />
<br />
Also fill in (new) secret strings for {{ic|secrets.yml}}:<br />
<br />
{{hc|/etc/webapps/gitlab/secrets.yml|<br />
production:<br />
secret_key_base: ''secret''<br />
db_key_base: ''secret''<br />
}}<br />
<br />
===Redis===<br />
<br />
In order to provide sufficient performance you will need a cache database. [[Redis#Installation|Install]] and [[Redis#Configuration|configure]] a Redis instance, being careful to the section dedicated to listening via a socket.<br />
<br />
Add the {{ic|gitlab}} user to the {{ic|redis}} [[user group]] and update this configuration file:<br />
<br />
{{hc|/etc/webapps/gitlab/resque.yml|2=<br />
development:<br />
url: unix:/run/redis/redis.sock<br />
test:<br />
url: unix:/run/redis/redis.sock<br />
production:<br />
url: unix:/run/redis/redis.sock<br />
}}<br />
<br />
=== PostgreSQL database ===<br />
<br />
A [[PostgreSQL]] database will be required before Gitlab can be run.<br />
<br />
Login to PostgreSQL and create the {{ic|gitlabhq_production}} database along with its user. Remember to change {{ic|your_username_here}} and {{ic|your_password_here}} to the real values:<br />
<br />
# psql -d template1<br />
<br />
{{bc|1=<br />
template1=# CREATE USER your_username_here WITH PASSWORD 'your_password_here';<br />
template1=# ALTER USER your_username_here SUPERUSER;<br />
template1=# CREATE DATABASE gitlabhq_production OWNER your_username_here;<br />
template1=# \q<br />
}}<br />
<br />
{{Note|The reason for creating the user as a superuser is that GitLab is trying to be "smart" and install extensions (not just create them in its own userspace). And this is only allowed by superusers in Postgresql.}}<br />
<br />
Try connecting to the new database with the new user to verify it works:<br />
<br />
# psql -d gitlabhq_production<br />
<br />
Copy the PostgreSQL template file before configuring it:<br />
<br />
# cp /usr/share/doc/gitlab/database.yml.postgresql /etc/webapps/gitlab/database.yml<br />
<br />
Open the new {{ic|/etc/webapps/gitlab/database.yml}} and set the values for {{ic|username:}} and {{ic|password:}}. For example:<br />
<br />
{{hc|/etc/webapps/gitlab/database.yml|<br />
#<br />
# PRODUCTION<br />
#<br />
production:<br />
adapter: postgresql<br />
encoding: unicode<br />
database: gitlabhq_production<br />
pool: 10<br />
username: your_username_here<br />
password: "your_password_here"<br />
# host: localhost<br />
# port: 5432<br />
socket: /run/postgresql/.s.PGSQL.5432<br />
...<br />
}}<br />
<br />
For our purposes (unless you know what you are doing), you do not need to worry about configuring the other databases listed in {{ic|/etc/webapps/gitlab/database.yml}}. We only need to set up the production database to get GitLab working.<br />
<br />
=== Firewall ===<br />
<br />
If you want to give direct access to your Gitlab installation through an [[iptables]] firewall, you may need to adjust the port and the network address:<br />
<br />
# iptables -A tcp_inbound -p TCP -s '''192.168.1.0/24''' --destination-port '''80''' -j ACCEPT<br />
<br />
To enable API-access:<br />
<br />
# iptables -A tcp_inbound -p TCP -s '''192.168.1.0/24''' --destination-port '''8080''' -j ACCEPT<br />
<br />
If you are behind a router, do not forget to forward this port to the running GitLab server host, if you want to allow WAN-access.<br />
<br />
=== Initialize Gitlab database ===<br />
<br />
Start the [[Redis]] server and the {{ic|gitlab-gitaly.service}} before initializing the database.<br />
<br />
Initialize the database and activate advanced features:<br />
<br />
# su - gitlab -s /bin/sh -c "cd '/usr/share/webapps/gitlab'; EXECJS_RUNTIME=Disabled bundle exec rake gitlab:setup RAILS_ENV=production"<br />
<br />
Finally run the following commands to check your installation:<br />
<br />
# su - gitlab -s /bin/sh -c "cd '/usr/share/webapps/gitlab'; EXECJS_RUNTIME=Disabled bundle exec rake gitlab:env:info RAILS_ENV=production"<br />
# su - gitlab -s /bin/sh -c "cd '/usr/share/webapps/gitlab'; EXECJS_RUNTIME=Disabled bundle exec rake gitlab:check RAILS_ENV=production"<br />
<br />
{{note|<br />
*The ''gitlab:env:info'' and ''gitlab:check'' commands will show a fatal error related to git. This is OK.<br />
*The ''gitlab:check'' will complain about missing initscripts. This is nothing to worry about, as [[systemd]] service files are used instead (which GitLab does not recognize).<br />
}}<br />
<br />
=== Adjust modifier bits ===<br />
(The gitlab check will not pass if the user and group ownership is not configured properly)<br />
<br />
# chmod -R ug+rwX,o-rwx /var/lib/gitlab/repositories/<br />
# chmod -R ug-s /var/lib/gitlab/repositories<br />
# find /var/lib/gitlab/repositories/ -type d -print0 | xargs -0 chmod g+s<br />
<br />
== Start and test GitLab ==<br />
<br />
Make sure [[PostgreSQL]] and [[Redis]] are running and setup correctly.<br />
<br />
Then [[start]]/[[enable]] {{ic|gitlab.target}}.<br />
<br />
Now test your GitLab instance by visiting http://localhost:8080; you should be prompted to create a password:<br />
<br />
{{bc|<br />
username: root<br />
password: You will be prompted to create one on your first visit.<br />
}}<br />
<br />
To access GitLab from an outside network, the upstream documentation recommends to use an established web server as a proxy. See [[#Web server configuration]] for details. <br />
<br />
See [[#Troubleshooting]] and log files inside the {{ic|/usr/share/webapps/gitlab/log/}} directory for troubleshooting.<br />
<br />
== Upgrade database on updates ==<br />
After updating the {{Pkg|gitlab}} package, it is required to upgrade the database:<br />
# su - gitlab -s /bin/sh -c "cd '/usr/share/webapps/gitlab'; EXECJS_RUNTIME=Disabled bundle exec rake db:migrate RAILS_ENV=production"<br />
<br />
Afterwards, restart gitlab-related services:<br />
# systemctl daemon-reload<br />
# systemctl restart gitlab-sidekiq gitlab-puma gitlab-workhorse gitlab-gitaly<br />
<br />
== Advanced configuration ==<br />
<br />
=== Basic SSH ===<br />
After completing the basic installation, set up SSH access for users. Configuration for [[OpenSSH]] is described below. [[SSH#Implementations|Other SSH clients and servers]] will require different modifications.<br />
<br />
For tips on adding user SSH keys, the process is well-documented on the [https://docs.gitlab.com/ee/ssh/ GitLab] website. You can check the administrator logs at {{ic|/var/lib/gitlab/log/gitlab-shell.log}} to confirm user SSH keys are being submitted properly. Behind the scenes, GitLab adds these keys to its ''authorized_keys'' file in {{ic|/var/lib/gitlab/.ssh/authorized_keys}}.<br />
<br />
The common method of testing keys (ex: {{ic|<nowiki>$ ssh -T git@</nowiki>''YOUR_SERVER''}}) requires a bit of extra configuration to work correctly. The user configured in {{ic|/etc/webapps/gitlab/gitlab.yml}} (default user: {{ic|gitlab}}) must be added to the server's sshd configuration file, in addition to a handful of other changes:<br />
{{hc|/etc/ssh/sshd_config|<br />
PubkeyAuthentication yes<br />
AuthorizedKeysFile %h/.ssh/authorized_keys<br />
}}<br />
<br />
If your {{ic|/etc/ssh/sshd_config}} contains {{ic|AllowUsers}} option then please add {{ic|gitlab}} user to the list:<br />
{{hc|/etc/ssh/sshd_config|<br />
AllowUsers gitlab <i>foobar</i><br />
}}<br />
<br />
After updating the configuration file, restart the ssh daemon:<br />
# systemctl restart sshd<br />
<br />
Test user SSH keys (optionally add -v to see extra information):<br />
<nowiki>$ ssh -T </nowiki>'''gitlab'''@''YOUR_SERVER''<br />
<br />
=== Custom SSH connection ===<br />
If you are running SSH on a non-standard port, you must change the GitLab user's SSH config:<br />
{{hc|/var/lib/gitlab/.ssh/config|2=<br />
host localhost # Give your setup a name (here: override localhost)<br />
user gitlab # Your remote git user<br />
port 2222 # Your port number<br />
hostname 127.0.0.1; # Your server name or IP<br />
}}<br />
<br />
You also need to change the corresponding options (e.g. ssh_user, ssh_host, admin_uri) in the {{ic|/etc/webapps/gitlab/gitlab.yml}} file.<br />
<br />
=== HTTPS/SSL ===<br />
<br />
==== Change GitLab configs ====<br />
Modify {{ic|/etc/webapps/gitlab/shell.yml}} so the url to your GitLab site starts with {{ic|https://}}.<br />
Modify {{ic|/etc/webapps/gitlab/gitlab.yml}} so that {{ic|https:}} setting is set to {{ic|true}}.<br />
<br />
See also [[Apache HTTP Server#TLS]] and [[Let’s Encrypt]].<br />
<br />
==== Let's Encrypt ====<br />
<br />
To validate your URL, the Let's Encrypt process will try to access your gitlab server with something like {{ic|<nowiki>https://gitlab.</nowiki>''YOUR_SERVER_FQDN''/.well-known/acme-challenge/''A_LONG_ID''}}. But, due to gitlab configuration, every request to {{ic|gitlab.''YOUR_SERVER_FQDN''}} will be redirected to a proxy (gitlab-workhorse) that will not be able to deal with this URL.<br />
<br />
To bypass this issue, you can use the Let's Encrypt webroot configuration, setting the webroot at {{ic|/srv/http/letsencrypt/}}.<br />
<br />
Additionally, force the Let's Encrypt request for gitlab to be redirected to this webroot by adding the following:<br />
<br />
{{hc|/etc/http/conf/extra/gitlab.conf|<br />
Alias "/.well-known" "/srv/http/letsencrypt/.well-known"<br />
RewriteCond %{REQUEST_URI} !/\.well-known/.*<br />
}}<br />
<br />
===Web server configuration===<br />
If you want to integrate GitLab into a running web server instead of using its build-in HTTP server Puma, follow these instructions.<br />
<br />
==== Node.js ====<br />
You can easily set up an HTTP proxy on port 443 to proxy traffic to the GitLab application on port 8080 using http-master for Node.js. After you have created your domain's OpenSSL keys and have gotten you CA certificate (or self signed it), then go to https://github.com/CodeCharmLtd/http-master to learn how easy it is to proxy requests to GitLab using HTTPS. http-master is built on top of [https://github.com/nodejitsu/node-http-proxy node-http-proxy].<br />
<br />
==== Nginx ====<br />
<br />
See [[Nginx#Configuration]] for basic ''nginx'' configuration and [[Nginx#TLS]] for enabling HTTPS. The sample in this section also assumes that server blocks are managed with [[Nginx#Managing server entries]].<br />
<br />
Create and edit the configuration based on the following snippet. See the [https://gitlab.com/gitlab-org/gitlab-ce/tree/master/lib/support/nginx upstream GitLab repository] for more examples.<br />
<br />
{{hc|/etc/nginx/servers-available/gitlab|<nowiki><br />
upstream gitlab-workhorse {<br />
server unix:/run/gitlab/gitlab-workhorse.socket fail_timeout=0;<br />
}<br />
<br />
server {<br />
listen 80; # IPv4 HTTP<br />
#listen 443 ssl http2; # uncomment to enable IPv4 HTTPS + HTTP/2<br />
#listen [::]:80; # uncomment to enable IPv6 HTTP<br />
#listen [::]:443 ssl http2; # uncomment to enable IPv6 HTTPS + HTTP/2<br />
server_name example.com;<br />
<br />
#ssl_certificate ssl/example.com.crt;<br />
#ssl_certificate_key ssl/example.com.key;<br />
<br />
location / {<br />
# unlimited upload size in nginx (so the setting in GitLab applies)<br />
client_max_body_size 0;<br />
<br />
# proxy timeout should match the timeout value set in /etc/webapps/gitlab/puma.rb<br />
proxy_read_timeout 60;<br />
proxy_connect_timeout 60;<br />
proxy_redirect off;<br />
<br />
proxy_set_header Host $http_host;<br />
proxy_set_header X-Real-IP $remote_addr;<br />
proxy_set_header X-Forwarded-Ssl on;<br />
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br />
proxy_set_header X-Forwarded-Proto $scheme;<br />
<br />
proxy_pass http://gitlab-workhorse;<br />
}<br />
<br />
error_page 404 /404.html;<br />
error_page 422 /422.html;<br />
error_page 500 /500.html;<br />
error_page 502 /502.html;<br />
error_page 503 /503.html;<br />
location ~ ^/(404|422|500|502|503)\.html$ {<br />
root /usr/share/webapps/gitlab/public;<br />
internal;<br />
}<br />
}<br />
</nowiki>}}<br />
<br />
==== Apache ====<br />
<br />
Install and configure the [[Apache HTTP Server]]. You can use these [https://gitlab.com/gitlab-org/gitlab-recipes/tree/master/web-server/apache upstream recipes] to get started with the configuration file for GitLab's virtual host.<br />
<br />
For the SSL configuration see [[Apache HTTP Server#TLS]]. If you do not need it, remove it. Notice that the SSL virtual host needs a specific IP instead of generic. Also if you set a custom port for Puma, do not forget to set it at the {{ic|BalanceMember}} line.<br />
<br />
==Useful tips==<br />
<br />
===Rake tasks===<br />
A number of setup/maintenance/etc tasks are available through rake. To list them, go to Gitlab's home directory:<br />
# cd /usr/share/webapps/gitlab<br />
<br />
and run:<br />
{{hc|<nowiki># rake -T | grep gitlab</nowiki>|<nowiki><br />
rake gitlab:app:check # GITLAB | Check the configuration of the GitLab Rails app<br />
rake gitlab:backup:create # GITLAB | Create a backup of the GitLab system<br />
rake gitlab:backup:restore # GITLAB | Restore a previously created backup<br />
rake gitlab:check # GITLAB | Check the configuration of GitLab and its environment<br />
rake gitlab:cleanup:block_removed_ldap_users # GITLAB | Cleanup | Block users that have been removed in LDAP<br />
rake gitlab:cleanup:dirs # GITLAB | Cleanup | Clean namespaces<br />
rake gitlab:cleanup:repos # GITLAB | Cleanup | Clean repositories<br />
rake gitlab:env:check # GITLAB | Check the configuration of the environment<br />
rake gitlab:env:info # GITLAB | Show information about GitLab and its environment<br />
rake gitlab:generate_docs # GITLAB | Generate sdocs for project<br />
rake gitlab:gitlab_shell:check # GITLAB | Check the configuration of GitLab Shell<br />
rake gitlab:import:all_users_to_all_groups # GITLAB | Add all users to all groups (admin users are added as owners)<br />
rake gitlab:import:all_users_to_all_projects # GITLAB | Add all users to all projects (admin users are added as masters)<br />
rake gitlab:import:repos # GITLAB | Import bare repositories from gitlab_shell -> repos_path into GitLab project instance<br />
rake gitlab:import:user_to_groups[email] # GITLAB | Add a specific user to all groups (as a developer)<br />
rake gitlab:import:user_to_projects[email] # GITLAB | Add a specific user to all projects (as a developer)<br />
rake gitlab:satellites:create # GITLAB | Create satellite repos<br />
rake gitlab:setup # GITLAB | Setup production application<br />
rake gitlab:shell:build_missing_projects # GITLAB | Build missing projects<br />
rake gitlab:shell:install[tag,repo] # GITLAB | Install or upgrade gitlab-shell<br />
rake gitlab:shell:setup # GITLAB | Setup gitlab-shell<br />
rake gitlab:sidekiq:check # GITLAB | Check the configuration of Sidekiq<br />
rake gitlab:test # GITLAB | Run all tests<br />
rake gitlab:web_hook:add # GITLAB | Adds a web hook to the projects<br />
rake gitlab:web_hook:list # GITLAB | List web hooks<br />
rake gitlab:web_hook:rm # GITLAB | Remove a web hook from the projects<br />
rake setup # GITLAB | Setup gitlab db<br />
</nowiki>}}<br />
<br />
===Backup and restore===<br />
<br />
Create a backup of the gitlab system:<br />
# su - gitlab -s /bin/sh -c "cd '/usr/share/webapps/gitlab'; bundle exec rake RAILS_ENV=production gitlab:backup:create"<br />
<br />
Restore the previously created backup file {{ic|/var/lib/gitlab/backups/1556571328_2019_04_29_11.10.2_gitlab_backup.tar}}:<br />
# su - gitlab -s /bin/sh -c "cd '/usr/share/webapps/gitlab'; bundle exec rake RAILS_ENV=production gitlab:backup:restore BACKUP=1556571328_2019_04_29_11.10.2"<br />
<br />
{{Note| Backup folder is set in {{ic|config/gitlab.yml}}. GitLab backup and restore is documented [https://github.com/gitlabhq/gitlabhq/blob/master/doc/raketasks/backup_restore.md here].}}<br />
<br />
=== Enable fast SSH key lookup ===<br />
<br />
Enable Fast SSH Key Lookup as explained in this page: https://docs.gitlab.com/ee/administration/operations/fast_ssh_key_lookup.html<br />
<br />
In short, edit {{ic|/etc/ssh/sshd_config}}.<br />
<br />
Revert all changes done following this wiki (or revert {{ic|sshd_config}} from the {{Pkg|openssh}} package) and only add:<br />
<br />
AuthorizedKeysCommand /var/lib/gitlab/gitlab-shell/bin/gitlab-shell-authorized-keys-check gitlab %u %k<br />
AuthorizedKeysCommandUser gitlab<br />
<br />
Finally [[restart]] the {{ic|sshd.service}}.<br />
<br />
===Sending mails from Gitlab via SMTP===<br />
<br />
You might want to use a gmail (or other mail service) to send mails from your gitlab server. This avoids the need to install a mail daemon on the gitlab server.<br />
<br />
Adjust {{ic|smtp_settings.rb}} according to your mail server settings:<br />
<br />
{{hc|/usr/share/webapps/gitlab/config/initializers/smtp_settings.rb|<nowiki><br />
if Rails.env.production?<br />
Gitlab::Application.config.action_mailer.delivery_method = :smtp<br />
<br />
ActionMailer::Base.delivery_method = :smtp<br />
ActionMailer::Base.smtp_settings = {<br />
address: 'smtp.gmail.com',<br />
port: 587,<br />
domain: 'gmail.com',<br />
user_name: 'username@gmail.com',<br />
password: 'application password',<br />
authentication: 'plain',<br />
enable_starttls_auto: true<br />
}<br />
end</nowiki>}}<br />
<br />
Gmail will reject mails received this way (and send you a mail that it did). You will need to disable secure authentication (follow the link in the rejection mail) to work around this. The more secure approach is to enable two-factor authentication for username@gmail.com and to set up an application password for this configuration file.<br />
<br />
==Troubleshooting==<br />
<br />
=== HTTPS is not green (gravatar not using https) ===<br />
Redis caches gravatar images, so if you have visited your GitLab with http, then enabled https, gravatar will load up the non-secure images. You can clear the cache by doing<br />
<br />
cd /usr/share/webapps/gitlab<br />
RAILS_ENV=production bundle exec rake cache:clear<br />
<br />
as the gitlab user.<br />
<br />
=== Errors after updating ===<br />
After updating the package from the AUR, the database migrations and asset updates will sometimes fail. These steps may resolve the issue, if a simple reboot does not.<br />
<br />
First, move to the gitlab installation directory.<br />
# cd /usr/share/webapps/gitlab<br />
<br />
If every gitlab page gives a 500 error, then the database migrations and the assets are probably stale. If not, skip this step.<br />
# su - gitlab -s /bin/sh -c "cd '/usr/share/webapps/gitlab'; bundle exec rake db:migrate RAILS_ENV=production"<br />
<br />
If gitlab is constantly waiting for the deployment to finish, then the assets have probably not been recompiled.<br />
# su - gitlab -s /bin/sh -c "cd '/usr/share/webapps/gitlab'; bundle exec rake gitlab:assets:clean gitlab:assets:compile cache:clear RAILS_ENV=production"<br />
<br />
Finally, restart the gitlab services and test your site.<br />
# systemctl restart gitlab-puma gitlab-sidekiq gitlab-workhorse<br />
<br />
=== GitLab Puma cannot access non-default repositories directory ===<br />
<br />
If a custom repository storage directory is set in {{ic|/home}}, disable the {{ic|1=ProtectHome=true}} parameter in the {{ic|gitlab-puma.service}} (see [[systemd#Drop-in files]] and the [https://forum.gitlab.com/t/cannot-change-repositores-location/9634/2 relevant forum thread on gitlab.com]).<br />
<br />
=== Failed to connect to Gitaly ===<br />
<br />
Sometimes, the Gitaly service will not get started, leaving GitLab unable to connect to Gitaly. The solution is simple:<br />
# systemctl start gitlab-gitaly<br />
<br />
=== Failed to connect via SSH ===<br />
If git operations (-T, pull, clone, etc.) fails using ssh try changing the shell:<br />
<br />
# usermod -s /usr/share/webapps/gitlab-shell/bin/gitlab-shell-ruby gitlab<br />
<br />
=== CSS or styles issue ===<br />
<br />
If you have any issues with styles and CSS not working, you may try to edit {{ic|/usr/share/webapps/gitlab/config/environments/production.rb}} and change:<br />
<br />
# Disable Rails's static asset server (Apache or nginx will already do this)<br />
config.public_file_server.enabled = false<br />
<br />
to:<br />
<br />
# Disable Rails's static asset server (Apache or nginx will already do this)<br />
config.public_file_server.enabled = true<br />
<br />
=== The server does not support push options ===<br />
<br />
If you get an error like {{ic|fatal: the receiving end does not support push options}} you might need to enable it for the GitLab Git user ({{ic|gitlab}}) on the server. This can be done by editing {{ic|/var/lib/gitlab/.gitconfig}}:<br />
[receive]<br />
advertisepushoptions = true<br />
<br />
==See also==<br />
*[https://docs.gitlab.com/ce/install/installation.html Official installation documentation]<br />
*[https://gitlab.com/gitlab-org/gitlab-recipes GitLab recipes with further documentation on running it with several web servers]<br />
*[https://gitlab.com/gitlab-org/gitlab-ce GitLab source code]</div>Hashworkshttps://wiki.archlinux.org/index.php?title=Mattermost&diff=615895Mattermost2020-05-26T09:34:38Z<p>Hashworks: /* Added help to set up Plugins */</p>
<hr />
<div>[[Category:Web applications]]<br />
[[ja:Mattermost]]<br />
From [http://www.mattermost.org/ Mattermost's homepage]:<br />
<br />
:Mattermost is an open source, self-hosted Slack-alternative. As an alternative to proprietary SaaS messaging, Mattermost brings all your team communication into one place, making it searchable and accessible anywhere.<br />
<br />
This article describes how to install and configure the Mattermost server.<br />
<br />
== Installation ==<br />
<br />
The Mattermost server can be installed in two ways:<br />
<br />
* Using [[Docker]] by following the steps described in [[#With Docker]];<br />
* Using an [[AUR]] package, by following the steps described in [[#With AUR]].<br />
<br />
An [https://electron.atom.io/ Electron]-based desktop client is provided by the {{aur|mattermost-desktop}} package.<br />
<br />
=== With Docker ===<br />
<br />
By using Docker, you do not need to manually install a database server and configure Mattermost dependencies. Since the docker image comes with all the dependencies automatically bundled, this is less work for you.<br />
<br />
However, the tradeoff is that you cannot choose the database back-end or web server you want, but only those provided in the docker images, unless you make your own.<br />
<br />
* [[Docker#Installation|Install Docker]] (including {{ic|docker-compose}}).<br />
* Download the source:<br />
:{{bc|<nowiki><br />
$ git clone https://github.com/mattermost/mattermost-docker.git <br />
</nowiki>}}<br />
* Edit the {{ic|docker-compose.yml}} file<br />
** Uncomment the {{ic|args:}} line.<br />
** For Team edition, remove the comments on the line: {{ic|1=- edition=team}}.<br />
** Adopt the UID/GID in the section to those of the owner of your {{ic|./volumes/app/mattermost/*}} folders.<br />
** Add the port forwarding statements as a child of {{ic|app}} section (e.g. between {{ic|build}} and {{ic|restart}})<br />
:{{bc|<nowiki>ports:<br />
- "127.0.0.1:8065:8000"</nowiki>}}<br />
* Build and start the docker container:<br />
:{{bc|<nowiki><br />
$ cd mattermost-docker<br />
$ docker-compose build<br />
$ docker-compose up -d<br />
</nowiki>}}<br />
<br />
* Open {{ic|http://localhost:8000/}} in your browser.<br />
<br />
Please refer to [https://docs.mattermost.com/install/prod-docker.html the official guide] for how to configure TLS, email, enable Enterprise features and use several server nodes using Docker Compose.<br />
<br />
There are also some Docker images provided on the [https://hub.docker.com/r/mattermost/ official Mattermost Docker Hub page]. Please also refer to [https://github.com/mattermost/mattermost-docker the repository of the Mattermost Docker images].<br />
<br />
=== With AUR ===<br />
<br />
[[Install]] the {{aur|mattermost}} package, or {{aur|mattermost-git}} for the development version.<br />
<br />
* The installation will create the {{ic|mattermost}} user and group.<br />
* The configuration happens in {{ic|/etc/webapps/mattermost/config.json}} where {{ic|/etc/webapps/mattermost/}} and {{ic|/etc/webapps/mattermost/config.json}} are both owned by {{ic|mattermost:mattermost}}.<br />
* In {{ic|/var/lib/mattermost/}} recursively owned by {{ic|mattermost:mattermost}}, we can find:<br />
** {{ic|files}}, a folder where all user files posted via messages, profile pictures and team pictures are stored;<br />
** {{ic|client}}, a folder related to the webapp client which contains files rewritten by the webapp during runtime and, in the {{ic|plugins}} subfolder, the web plugins installed via the webui;<br />
** {{ic|plugins}}, a folder related to the plugins (server part).<br />
* In {{ic|/var/log/mattermost}}, a folder created on the fly during the install process (cf. [[Systemd#Temporary_files|tmpfiles.d]]) which stores the server logs as json. {{ic|/var/log/mattermost}} and {{ic|/var/log/mattermost/mattermost.log}} are both owned by {{ic|mattermost:mattermost}}.<br />
* The rest of the immutable Mattermost directory is located at {{ic|/usr/share/webapps/mattermost/}} and is recursively owned by {{ic|root:root}}.<br />
<br />
Continue with [[#Database setup]].<br />
<br />
== Database setup ==<br />
<br />
Mattermost requires a database back-end. If you plan to run it on the same machine, first install either [[MySQL]] or [[PostgreSQL]] as database.<br />
<br />
Follow one of the following sections and then proceed with [[#Configuring Mattermost]].<br />
<br />
=== MySQL/MariaDB ===<br />
<br />
{{hc|$ mysql -u root -p|<br />
CREATE DATABASE mattermostdb;<br />
CREATE USER mmuser IDENTIFIED BY 'mmuser_password';<br />
GRANT ALL ON mattermostdb.* TO mmuser;<br />
}}<br />
<br />
=== PostgreSQL ===<br />
<br />
1. [[PostgreSQL#Installation|Install]] and [[PostgreSQL#Initial_configuration|configure]] [[PostgreSQL]].<br />
<br />
2. Choose between TCP or UNIX Socket, and jump to the corresponding section.<br />
<br />
{{Note|When Mattermost and PostgreSQL are on the same machine, you should use a Unix socket, as it is faster and more secure.}}<br />
<br />
==== With TCP socket ====<br />
<br />
3. Create the new user while connecting to the server as {{ic|postgres}} user (you will be prompted for a password for the new user):<br />
<br />
:{{bc|sudo -u postgres createuser -P mmuser}}<br />
<br />
4. Create the Mattermost database, owned by {{ic|mmuser}} user:<br />
<br />
:{{bc|sudo -u postgres createdb -O mmuser mattermostdb}}<br />
<br />
5. [[PostgreSQL#Configure PostgreSQL to be accessible from remote hosts]]<br />
<br />
6. Verify it works:<br />
<br />
:{{bc|1=$ psql --host=''ip_address'' --dbname=mattermostdb --username=mmuser --password}}<br />
<br />
==== With Unix socket ====<br />
<br />
3. Create the new user while connecting to the server as {{ic|postgres}} user:<br />
<br />
:{{bc|sudo -u postgres createuser mattermost}}<br />
<br />
4. Create the Mattermost database, owned by {{ic|mattermost}} user:<br />
<br />
:{{bc|sudo -u postgres createdb -O mattermost mattermostdb}}<br />
<br />
5. Setup the Unix socket by adding the following line to {{ic|/var/lib/postgres/data/pg_hba.conf}}:<br />
<br />
:{{bc|1=local mattermostdb mattermost peer}}<br />
<br />
6. [[Restart]] {{ic|postgresql.service}}.<br />
<br />
7. Verify it works:<br />
<br />
:{{bc|1=$ sudo -u mattermost psql --dbname=mattermostdb --username=mattermost}}<br />
<br />
=== Configuring Mattermost ===<br />
<br />
Mattermost is configured in {{ic|/etc/webapps/mattermost/config.json}}. Strings need to be quoted.<br />
<br />
There are two settings you need to adapt to your database.<br />
<br />
The {{ic|DriverName}} setting: {{ic|mysql}} for MySQL and {{ic|postgres}} for PostgreSQL.<br />
<br />
The {{ic|DataSource}}:<br />
* For MySQL, set it to {{ic|1='''mmuser''':'''mmuser_password'''@unix(/run/mysqld/mysqld.sock)/'''mattermostdb'''?charset=utf8mb4,utf8}}.<br />
* For PostgreSQL<br />
** TCP socket: {{ic|1=postgres://'''mmuser''':'''mmuser_password'''@127.0.0.1:5432/'''mattermostdb'''?sslmode=disable&connect_timeout=10}}<br />
** Unix socket: {{ic|1=postgres:///'''mattermostdb'''?host=/run/postgresql}} ; make sure there are 3 slashes after {{ic|postgres:}}, {{ic|mattermostdb}} is the name of the database and {{ic|/run/postgresql}} is the directory containing the Unix socket<br />
<br />
{{Note|Be sure to replace {{ic|mmuser_password}} with the password of the user.}}<br />
<br />
[[Start/enable]] {{ic|mattermost.service}} and open http://localhost:8065/.<br />
<br />
== Setting up Mattermost ==<br />
<br />
# Navigate to your Mattermost install and create a team and user.<br />
# The first user in the system is automatically granted the {{ic|system_admin}} role, which gives you access to the System Console.<br />
# From the ''town-square'' channel click the dropdown and choose the ''System Console'' option.<br />
# Update ''Notification > Email'' settings to setup an SMTP email service. The example below assumes AmazonSES.<br />
#* Set ''Send Email Notifications'' to ''true''<br />
#* Set ''Require Email Verification'' to ''true''<br />
#* Set ''Feedback Name'' to {{ic|No-Reply}}<br />
#* Set ''Feedback Email'' to {{ic|mattermost@example.com}}<br />
#* Set ''SMTP Username'' to {{ic|''your_smtp_username''}}<br />
#* Set ''SMTP Password'' to {{ic|''your_smtp_password''}}<br />
#* Set ''SMTP Server'' to {{ic|email-smtp.us-east-1.amazonaws.com}}<br />
#* Set ''SMTP Port'' to {{ic|465}}<br />
#* Set ''Connection Security'' to ''TLS''<br />
#* Save the Settings<br />
# Update ''File > Storage'' settings by changing ''Local Directory Location'' from {{ic|./data/}} to {{ic|/mattermost/data}}.<br />
# Update ''General > Logging'' settings by setting ''Log to The Console'' to ''false''.<br />
# Feel free to modify other settings.<br />
# [[Restart]] {{ic|mattermost.service}}.<br />
<br />
=== Plugins ===<br />
<br />
Plugins are enabled by default, but require access to the plugins directory which needs to be created with the correct owner:<br />
:{{bc|<nowiki><br />
$ mkdir /usr/share/webapps/mattermost/client/plugins<br />
$ chown mattermost:mattermost /usr/share/webapps/mattermost/client/plugins<br />
</nowiki>}}<br />
<br />
== Useful tips ==<br />
<br />
=== Valid HTTPS via reverse web-proxy ===<br />
<br />
To securely access your Mattermost server from the Android and iOS apps, which do not support self-signed TLS certificates, you can [https://docs.mattermost.com/install/config-proxy-nginx.html?highlight=proxy#configuring-nginx-as-a-proxy-for-mattermost-server setup a reverse web proxy].<br />
<br />
The main benefits of a proxy are:<br />
<br />
* SSL termination<br />
* HTTP to HTTPS redirect<br />
* Port mapping 80 to 8065<br />
* Standard request logs<br />
<br />
Proxying can be achieved with most web servers.<br />
<br />
==== nginx ====<br />
<br />
1. Install and run [[nginx]], preferably {{Pkg|nginx-mainline}}.<br />
<br />
2. Point your domain name eg. {{ic|mattermost.example.com}} to the server.<br />
<br />
3. Configure nginx to proxy connections from the internet to the Mattermost Server. Create and edit the nginx configuration file {{ic|/etc/nginx/sites-available/mattermost}}.<br />
<br />
:{{bc|<nowiki><br />
upstream backend {<br />
server 127.0.0.1:8065;<br />
keepalive 32;<br />
}<br />
<br />
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mattermost_cache:10m max_size=3g inactive=120m use_temp_path=off;<br />
<br />
server {<br />
listen 80;<br />
server_name mattermost.example.com;<br />
<br />
location ~ /api/v[0-9]+/(users/)?websocket$ {<br />
proxy_set_header Upgrade $http_upgrade;<br />
proxy_set_header Connection "upgrade";<br />
client_max_body_size 50M;<br />
proxy_set_header Host $http_host;<br />
proxy_set_header X-Real-IP $remote_addr;<br />
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br />
proxy_set_header X-Forwarded-Proto $scheme;<br />
proxy_set_header X-Frame-Options SAMEORIGIN;<br />
proxy_buffers 256 16k;<br />
proxy_buffer_size 16k;<br />
client_body_timeout 60;<br />
send_timeout 300;<br />
lingering_timeout 5;<br />
proxy_connect_timeout 90;<br />
proxy_send_timeout 300;<br />
proxy_read_timeout 90s;<br />
proxy_pass http://backend;<br />
}<br />
<br />
location / {<br />
client_max_body_size 50M;<br />
proxy_set_header Connection "";<br />
proxy_set_header Host $http_host;<br />
proxy_set_header X-Real-IP $remote_addr;<br />
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br />
proxy_set_header X-Forwarded-Proto $scheme;<br />
proxy_set_header X-Frame-Options SAMEORIGIN;<br />
proxy_buffers 256 16k;<br />
proxy_buffer_size 16k;<br />
proxy_read_timeout 600s;<br />
proxy_cache mattermost_cache;<br />
proxy_cache_revalidate on;<br />
proxy_cache_min_uses 2;<br />
proxy_cache_use_stale timeout;<br />
proxy_cache_lock on;<br />
proxy_pass http://backend;<br />
}<br />
}<br />
</nowiki>}}<br />
<br />
4. Enable the mattermost server:<br />
<br />
:{{bc|<nowiki><br />
# mkdir /etc/nginx/sites-enabled<br />
# ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/mattermost<br />
</nowiki>}}<br />
<br />
5. [[Restart]] {{ic|nginx.service}}.<br />
<br />
6. Verify you can access Mattermost through the proxy:<br />
<br />
:{{bc|curl http://localhost/}}<br />
<br />
: You should see a page titled {{ic|Mattermost}}.<br />
<br />
7. Set up [[Let’s Encrypt]].<br />
<br />
==== Lighttpd2 ====<br />
<br />
A configuration sample for {{AUR|lighttpd2-git}} to act as a proxy for Mattermost, assuming you have a certificate at {{ic|/etc/lighttpd2/certs/lighttpd2.pem}}.<br />
<br />
See [http://doc.lighttpd.net/lighttpd2/mod_vhost.html mod_vhost] if you want to transfer the proxy into a virtual host.<br />
<br />
{{hc|/etc/lighttpd2/lighttpd.conf|<nowiki><br />
setup {<br />
<br />
module_load [<br />
"mod_accesslog",<br />
"mod_proxy",<br />
"mod_openssl"<br />
];<br />
<br />
openssl [<br />
"listen" => "0.0.0.0:443",<br />
"listen" => "[::]:443",<br />
"pemfile" => "/etc/lighttpd2/certs/lighttpd2.pem",<br />
"options" => ["ALL", "NO_TICKET"],<br />
"verify" => true,<br />
"verify-any" => true,<br />
"verify-depth" => 9<br />
];<br />
<br />
listen "0.0.0.0:80";<br />
listen "[::]:80";<br />
<br />
log ["debug" => "", default => "/var/log/lighttpd2/error.log"];<br />
accesslog "/var/log/lighttpd2/access.log";<br />
accesslog.format "%h %V %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}\"";<br />
<br />
static.exlude_extensions [ ".php", ".pl", ".fcgi", "~", ".inc" ];<br />
<br />
}<br />
<br />
openssl.setenv "client-cert";<br />
keepalive.timeout 360;<br />
<br />
docroot "/srv/http";<br />
index [ "index.php", "index.html", "index.htm" ];<br />
<br />
include "/etc/lighttpd2/mimetypes.conf";<br />
<br />
proxy "127.0.0.1:8065";<br />
</nowiki>}}<br />
<br />
=== Testing translations and pull requests ===<br />
<br />
You can use the unofficial script [https://github.com/wget/mattermost-prepare-pkgbuild mattermost-prepare-pkgbuild] to test languages and pull requests.</div>Hashworkshttps://wiki.archlinux.org/index.php?title=Package_Maintainers&diff=585191Package Maintainers2019-10-10T20:39:34Z<p>Hashworks: spelling</p>
<hr />
<div>[[Category:Arch development]]<br />
[[Category:Teams]]<br />
[[es:Trusted Users]]<br />
[[fr:TU]]<br />
[[ja:Trusted Users]]<br />
[[pt:Trusted Users]]<br />
The [https://www.archlinux.org/people/trusted-users/ Trusted Users] serve the following purposes:<br />
# Maintain the ''community'' repository as an intermediary between Arch Linux's [[official repositories]] and the unsupported package collection in the [[AUR]].<br />
# Maintain, manage, and watch over the operation of the [[AUR]].<br />
<br />
== How do I become a TU? ==<br />
The ''minimum'' requirements to becoming a TU are as follows:<br />
* know basic shell scripting<br />
* maintain a few packages in AUR with clean, high-quality PKGBUILDs<br />
* basic community involvement (mailing list, forums, IRC)<br />
* know Google-Fu<br />
* a general idea of the kind of packages you want to maintain (basically, why do you want to become TU?)<br />
<br />
Even though you could become a TU by merely fulfilling those minimum requirements, the people judging you during the [https://aur.archlinux.org/trusted-user/TUbylaws.html#_standard_voting_procedure standard voting procedure] might expect more from you. Such as:<br />
* involvement in the bug tracker (reporting, research, info)<br />
* patches for Arch projects<br />
* involvement in a few open-source projects (even if they are your own)<br />
<br />
If you still feel up to becoming a TU after reading these lines, the first step is to find two TUs who agree to sponsor you. Once sponsored, you should write a witty application signed with your GPG key to the aur-general mailing list.<br />
<br />
{{Note|Should a TU you contact decline to sponsor your application, you should make this fact known if you seek sponsorship from another TU.}}<br />
<br />
For more information, see the [https://aur.archlinux.org/trusted-user/TUbylaws.html Trusted User Bylaws] and [[AUR Trusted User Guidelines]].<br />
<br />
== Active Trusted Users ==<br />
{| class="wikitable"<br />
! Nick<br />
! Name<br />
! E-Mail<br />
|-<br />
|[https://aur.archlinux.org/packages/?K=ainola&SeB=m ainola]||Brett Cornwall||oergg@v--o.pbz (rot13)<br />
|-<br />
|[https://aur.archlinux.org/packages/?K=Alad&SeB=m alad]||[[User:Alad|Alad Wenter]]||alad@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=alucryd&SeB=m alucryd]||Maxime Gauduin||alucryd@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=anatolik&SeB=m anatolik]||Anatol Pomozov||anatol dot pomozov + arch at gmail<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=andrewSC&SeB=m andrewSC]||Andrew Crerar||andrew (at) crerar (dot) io<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=anthraxx&SeB=m anthraxx]||[[User:anthraxx|Levente Polyak]]||anthraxx [at] archlinux [dot] org<br />
|-<br />
|[https://aur.archlinux.org/packages/?SeB=m&K=arcanis arcanis]||Evgeniy Alekseev||arcanis DOT arch AT gmail DOT com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=ArchangeGabriel&SeB=m ArchangeGabriel]||Bruno Pagani||bruno.n.pagani@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages/?SeB=m&K=arojas arojas]||Antonio Rojas||arojas@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Barthalion&SeB=m Barthalion]||Bartłomiej Piotrowski||spam@bpiotrowski.pl<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=BlackIkeEagle&SeB=m BlackIkeEagle]||[[User:BlackEagle|Ike Devolder]]||ike DOT devolder AT gmail DOT com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=bluewind&SeB=m Bluewind]||Florian Pritz|| bluewind@xinu.at<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=City-busz&SeB=m City-busz]||[[User:City-busz|Balló György]]||ballogyor+arch at gmail dot com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=coderobe&SeB=m coderobe]||Robin Broda||ebova ng oebqn qbg zr (rot13)<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=ConnorBehan&SeB=m ConnorBehan]||Connor Behan||connor.behan@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=lfleischer&SeB=m lfleischer]||Lukas Fleischer||lfleischer at archlinux dot org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=eworm&SeB=m eworm]||Christian Hesse||mail@eworm.de<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=daurnimator&SeB=m daurnimator]||Daurnimator||quae at daurnimator com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=dbermond&SeB=m dbermond]||Daniel Bermond||gmail-com: danielbermond<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=demize&SeB=m demize]||[[User:Kyrias|Johannes Löthberg]]||johannes@kyriasis.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=diabonas&SeB=m diabonas]||Jonas Witschel||diabonas@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Dragonlord&SeB=m Dragonlord]||[[User:Drag0nl0rd|Jaroslav Lichtblau]]||svetlemodry @ archlinux org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=dvzrv&SeB=m dvzrv]||[[User:Davezerave|David Runge]]|| dave@sleepmap.de<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=eschwartz&SeB=m eschwartz]||Eli Schwartz|| eschwartz@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=escondida&SeB=m escondida]||Ivy Foster||code @ escondida dot tk<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=farseerfc&SeB=m farseerfc]||Jiachen Yang||farseerfc[at]gmail[dot]com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=felixonmars&SeB=m felixonmars]||Felix Yan||felixonmars@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=FFY00&SeB=m FFY00]||Filipe Laíns||[mailto:lains@archlinux.org lains@archlinux.org]<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Foxboron&SeB=m Foxboron]||Morten Linderud||foxboron@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=foxxx0&SeB=m foxxx0]||Thore Bödecker||me [at] foxxx0 [dot] de<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=giniu&SeB=m giniu]||[[User:giniu|Andrzej Giniewicz]]||gginiu@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages/?SeB=m&K=grazzolini grazzolini]||Giancarlo Razzolini||grazzolini [at] gmail [dot] com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=heftig&SeB=m heftig]||Jan Alexander Steffens||jan.steffens@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=jelly&SeB=m jelly]||Jelle van der Waa|| jelle vdwaa nl<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=jleclanche&SeB=m jleclanche]||[[User:jleclanche|Jerome Leclanche]]||jerome''@''leclan''.''ch<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=jsteel&SeB=m jsteel]||Jonathan Steel||jsteel at aur.archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=kgizdov&SeB=m kgizdov]||Konstantin Gizdov||arch@kge.pw<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=keenerd&SeB=m keenerd]||Kyle Keen||keenerd@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=lordheavy&SeB=m Lordheavy]||[[User:Lordheavy|Laurent Carlier]]||lordheavym at gmail com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=maximbaz&SeB=m maximbaz]||Maxim Baz||archlinux at maximbaz dot com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=mtorromeo&SeB=m mtorromeo]||Massimiliano Torromeo||massimiliano.torromeo@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Muflone&SeB=m Muflone]||Fabio Castelli||muflone (at) archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=NicoHood&SeB=m NicoHood]||NicoHood||archlinux (cat) nicohood (dog) de<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=polyzen&SeB=m polyzen]||Daniel M. Capella||polyzen@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=sangy&SeB=m sangy]||Santiago Torres-Arias|| santiago @ archlinux ⇶ org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=schivmeister&SeB=m schivmeister]||[[User:Schivmeister|Ray Rashif]]||schiv archlinux org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=schuay&SeB=m schuay]||Jakob Gruber||jakob.gruber@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=seblu&SeB=m seblu]||Sébastien Luttringer||s е b l u ''at'' a r c h l і n ux ''dot'' o r g<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=sergej&SeB=m sergej]||[[User:Sergej|Sergej Pupykin]]||pupykin.s+arch@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=shibumi&SeB=m shibumi]||[[User:shibumi|Christian Rebischke]]||Chris.Rebischke [at] archlinux [dot] org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=stativ&SeB=m stativ]||Lukas Jirkovsky||l.jirkovsky strange_curved_character gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=svenstaro&SeB=m svenstaro]||[[User:svenstaro|Sven-Hendrik Haase]]||sh@lutzhaase.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=tensor5&SeB=m tensor5]||Nicola Squartini||tensor5@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=wild&SeB=m wild]||[[User:vild|Dan Printzell]]||[mailto:arch@vild.io arch@vild.io]<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Xyne&SeB=m Xyne]||Xyne||ca . archlinux @ xyne, in reverse order<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=xyproto&SeB=m xyproto]||Alexander F. Rødseth||xyproto@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=yan12125&SeB=m yan12125]||[[User:Yan12125|Chih-Hsuan Yen]]||yan12125@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=zorun&SeB=m zorun]||Baptiste Jonglez||archlinux bitsofnetworks org<br />
|}<br />
<br />
== Inactive Trusted Users ==<br />
{| class="wikitable"<br />
! Nick<br />
! Name<br />
! E-Mail<br />
! Comments/Reference<br />
|-<br />
|}<br />
<br />
== Some Past Trusted Users ==<br />
{| class="wikitable"<br />
! Nick<br />
! Name<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=abhidg&SeB=m abhidg]||Abhishek Dasgupta<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Allan&SeB=m Allan]||Allan McRae<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Ambrevar&SeB=m Ambrevar]||[[User:Ambrevar|Pierre Neidhardt]]<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=anders&SeB=m anders]||Anders Bergh<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=angvp&SeB=m angvp]||[[User:Angvp|Angel Velásquez]]<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Atsutane&SeB=m Atsutane]||Thorsten Töpper<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=bardo&SeB=m bardo]||Corrado Primier<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=ndr&SeB=m ndr]||Andrea Scarpino<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=bfinch&SeB=m bfinch]||Bob Finch<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=brain0&SeB=m brain0]||Thomas Bächler<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=bjorn&SeB=m bjorn]||[[User:Bjørn|Bjørn Lindeijer]]<br />
|- <br />
|[https://aur.archlinux.org/packages/?K=Cinelli&SeB=m cinelli] ||Federico Cinelli<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=codemac&SeB=m codemac]||Jeff Mickey<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=cmb&SeB=m cmb]||Chris Brannon<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Daenyth&SeB=m Daenyth]||Daenyth Blank<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=DaNiMoTh&SeB=m DaNiMoTh]||JJ. DaNiMoTh<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=dejari&SeB=m dejari]||Leslie P. Polzer<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=dsa&SeB=m dsa]||Douglas Soares de Andrade<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=dtw&SeB=m dtw]||Phil Dillon-Thiselton<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=elasticdog&SeB=m elasticdog]||Aaron Bull Schaefer<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=encelo&SeB=m encelo]||Angelo Theodorou<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=even&SeB=m even] ||Kessia Pinheiro<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=faidoc&SeB=m Faidoc]||Alexandre Filgueira<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=falconindy&SeB=m falconindy]||Dave Reisner<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=foutrelis&SeB=m foutrelis]||Evangelos Foutras<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=filoktetes&SeB=m filoktetes]||Robert Emil Berge<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=firmicus&SeB=m firmicus]||François Charette<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=flexiondotorg&SeB=m flexiondotorg]||Martin Wimpress<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=ganja_guru&SeB=m ganja_guru]||Varun Acharya<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=gcarrier&SeB=m gcarrier]||Geoffroy Carrier<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Ghost1227&SeB=m Ghost1227]||Dan Griffiths<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=gtmanfred&SeB=m gtmanfred]||Daniel Wallace<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=gummibaerchen&SeB=m gummibaerchen]||Timm Preetz<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=hdoria&SeB=m hdoria]||Hugo Doria<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=iphitus&SeB=m iphitus]||James Rayner<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=itsbrad212&SeB=m itsbrad212]||Brad Fanella<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=kaitocracy&SeB=m kaitocracy]||Kaiting Chen<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=louipc&SeB=m louipc]||Loui Chang<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=mOLOk&SeB=m mOLOk]||Alessio Bolognino<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=nesl247&SeB=m nesl247]||Alex Heck<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Neverth&SeB=m Neverth]||Mikko Seppälä<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Partition&SeB=m Partition]||Mateusz Herych<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=petelewis&SeB=m petelewis]||Peter Lewis<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=PirateJonno&SeB=m PirateJonno]||Jonathan Conder<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=phrakture&SeB=m phrakture]||Aaron Griffin<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Pierre&SeB=m Pierre]||Pierre Schmitz<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=pizzapunk&SeB=m pizzapunk]||Alexander Fehr<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=pjmattal&SeB=m pjmattal]||Paul Mattal<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=pressh&SeB=m pressh]||Ronald van Haren<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Ranguvar&SeB=m Ranguvar]||Devin Cofer<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Romashka&SeB=m Romashka]||Roman Kyrylych<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=shastry&SeB=m shastry]||Vinay S Shastry<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Snowman&SeB=m Snowman]||Eric Bélanger<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=shinlun&SeB=m shinlun]||Shinlun Hsieh<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=speps&SeB=m speps]||SpepS<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=StefanHusmann&SeB=m StefanHusmann]||Stefan Husmann<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=STiAT&SeB=m STiAT]||Georg Grabler<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=swiergot&SeB=m swiergot]||Jaroslaw Swierczynski<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=tardo&SeB=m tardo]||Shehzad Qureshi<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=td123&SeB=m td123]||Thomas Dziedzic<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=thatch45&SeB=m thatch45]||Thomas S Hatch<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=thotypous&SeB=m thotypous]||Paulo Matias<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=tredaelli&SeB=m tredaelli]||Timothy Redaelli<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=vegai&SeB=m vegai]||Vesa Kaihlavirta<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=voidnull&SeB=m voidnull]||Giovanni Scafora<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=wizzomafizzo&SeB=m wizzomafizzo]||Callan Barrett<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=wonder&SeB=m wonder]|| Ionut Biru<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Xilon&SeB=m Xilon]||Sebastian Nowicki<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=xterminus&SeB=m xterminus]||Charles Mauch<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=zeus&SeB=m zeus]||Zhukov Pavel<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Dicebot&SeB=m Dicebot]||Mihails Strasuns<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=thestinger&SeB=m thestinger]||Daniel Micay<br />
|}</div>Hashworkshttps://wiki.archlinux.org/index.php?title=Package_Maintainers&diff=585190Package Maintainers2019-10-10T20:38:34Z<p>Hashworks: Becoming a TU requires two TUs as sponsors, not one. As stated in https://aur.archlinux.org/trusted-user/TUbylaws.html#_addition_of_a_tu</p>
<hr />
<div>[[Category:Arch development]]<br />
[[Category:Teams]]<br />
[[es:Trusted Users]]<br />
[[fr:TU]]<br />
[[ja:Trusted Users]]<br />
[[pt:Trusted Users]]<br />
The [https://www.archlinux.org/people/trusted-users/ Trusted Users] serve the following purposes:<br />
# Maintain the ''community'' repository as an intermediary between Arch Linux's [[official repositories]] and the unsupported package collection in the [[AUR]].<br />
# Maintain, manage, and watch over the operation of the [[AUR]].<br />
<br />
== How do I become a TU? ==<br />
The ''minimum'' requirements to becoming a TU are as follows:<br />
* know basic shell scripting<br />
* maintain a few packages in AUR with clean, high-quality PKGBUILDs<br />
* basic community involvement (mailing list, forums, IRC)<br />
* know Google-Fu<br />
* a general idea of the kind of packages you want to maintain (basically, why do you want to become TU?)<br />
<br />
Even though you could become a TU by merely fulfilling those minimum requirements, the people judging you during the [https://aur.archlinux.org/trusted-user/TUbylaws.html#_standard_voting_procedure standard voting procedure] might expect more from you. Such as:<br />
* involvement in the bug tracker (reporting, research, info)<br />
* patches for Arch projects<br />
* involvement in a few open-source projects (even if they are your own)<br />
<br />
If you still feel up to becoming a TU after reading these lines, the first step is to find two TUs who agrees to sponsor you. Once sponsored, you should write a witty application signed with your GPG key to the aur-general mailing list.<br />
<br />
{{Note|Should the TU you contact decline to sponsor your application, you should make this fact known if you seek sponsorship from another TU.}}<br />
<br />
For more information, see the [https://aur.archlinux.org/trusted-user/TUbylaws.html Trusted User Bylaws] and [[AUR Trusted User Guidelines]].<br />
<br />
== Active Trusted Users ==<br />
{| class="wikitable"<br />
! Nick<br />
! Name<br />
! E-Mail<br />
|-<br />
|[https://aur.archlinux.org/packages/?K=ainola&SeB=m ainola]||Brett Cornwall||oergg@v--o.pbz (rot13)<br />
|-<br />
|[https://aur.archlinux.org/packages/?K=Alad&SeB=m alad]||[[User:Alad|Alad Wenter]]||alad@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=alucryd&SeB=m alucryd]||Maxime Gauduin||alucryd@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=anatolik&SeB=m anatolik]||Anatol Pomozov||anatol dot pomozov + arch at gmail<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=andrewSC&SeB=m andrewSC]||Andrew Crerar||andrew (at) crerar (dot) io<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=anthraxx&SeB=m anthraxx]||[[User:anthraxx|Levente Polyak]]||anthraxx [at] archlinux [dot] org<br />
|-<br />
|[https://aur.archlinux.org/packages/?SeB=m&K=arcanis arcanis]||Evgeniy Alekseev||arcanis DOT arch AT gmail DOT com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=ArchangeGabriel&SeB=m ArchangeGabriel]||Bruno Pagani||bruno.n.pagani@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages/?SeB=m&K=arojas arojas]||Antonio Rojas||arojas@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Barthalion&SeB=m Barthalion]||Bartłomiej Piotrowski||spam@bpiotrowski.pl<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=BlackIkeEagle&SeB=m BlackIkeEagle]||[[User:BlackEagle|Ike Devolder]]||ike DOT devolder AT gmail DOT com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=bluewind&SeB=m Bluewind]||Florian Pritz|| bluewind@xinu.at<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=City-busz&SeB=m City-busz]||[[User:City-busz|Balló György]]||ballogyor+arch at gmail dot com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=coderobe&SeB=m coderobe]||Robin Broda||ebova ng oebqn qbg zr (rot13)<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=ConnorBehan&SeB=m ConnorBehan]||Connor Behan||connor.behan@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=lfleischer&SeB=m lfleischer]||Lukas Fleischer||lfleischer at archlinux dot org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=eworm&SeB=m eworm]||Christian Hesse||mail@eworm.de<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=daurnimator&SeB=m daurnimator]||Daurnimator||quae at daurnimator com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=dbermond&SeB=m dbermond]||Daniel Bermond||gmail-com: danielbermond<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=demize&SeB=m demize]||[[User:Kyrias|Johannes Löthberg]]||johannes@kyriasis.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=diabonas&SeB=m diabonas]||Jonas Witschel||diabonas@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Dragonlord&SeB=m Dragonlord]||[[User:Drag0nl0rd|Jaroslav Lichtblau]]||svetlemodry @ archlinux org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=dvzrv&SeB=m dvzrv]||[[User:Davezerave|David Runge]]|| dave@sleepmap.de<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=eschwartz&SeB=m eschwartz]||Eli Schwartz|| eschwartz@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=escondida&SeB=m escondida]||Ivy Foster||code @ escondida dot tk<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=farseerfc&SeB=m farseerfc]||Jiachen Yang||farseerfc[at]gmail[dot]com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=felixonmars&SeB=m felixonmars]||Felix Yan||felixonmars@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=FFY00&SeB=m FFY00]||Filipe Laíns||[mailto:lains@archlinux.org lains@archlinux.org]<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Foxboron&SeB=m Foxboron]||Morten Linderud||foxboron@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=foxxx0&SeB=m foxxx0]||Thore Bödecker||me [at] foxxx0 [dot] de<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=giniu&SeB=m giniu]||[[User:giniu|Andrzej Giniewicz]]||gginiu@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages/?SeB=m&K=grazzolini grazzolini]||Giancarlo Razzolini||grazzolini [at] gmail [dot] com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=heftig&SeB=m heftig]||Jan Alexander Steffens||jan.steffens@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=jelly&SeB=m jelly]||Jelle van der Waa|| jelle vdwaa nl<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=jleclanche&SeB=m jleclanche]||[[User:jleclanche|Jerome Leclanche]]||jerome''@''leclan''.''ch<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=jsteel&SeB=m jsteel]||Jonathan Steel||jsteel at aur.archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=kgizdov&SeB=m kgizdov]||Konstantin Gizdov||arch@kge.pw<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=keenerd&SeB=m keenerd]||Kyle Keen||keenerd@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=lordheavy&SeB=m Lordheavy]||[[User:Lordheavy|Laurent Carlier]]||lordheavym at gmail com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=maximbaz&SeB=m maximbaz]||Maxim Baz||archlinux at maximbaz dot com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=mtorromeo&SeB=m mtorromeo]||Massimiliano Torromeo||massimiliano.torromeo@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Muflone&SeB=m Muflone]||Fabio Castelli||muflone (at) archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=NicoHood&SeB=m NicoHood]||NicoHood||archlinux (cat) nicohood (dog) de<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=polyzen&SeB=m polyzen]||Daniel M. Capella||polyzen@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=sangy&SeB=m sangy]||Santiago Torres-Arias|| santiago @ archlinux ⇶ org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=schivmeister&SeB=m schivmeister]||[[User:Schivmeister|Ray Rashif]]||schiv archlinux org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=schuay&SeB=m schuay]||Jakob Gruber||jakob.gruber@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=seblu&SeB=m seblu]||Sébastien Luttringer||s е b l u ''at'' a r c h l і n ux ''dot'' o r g<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=sergej&SeB=m sergej]||[[User:Sergej|Sergej Pupykin]]||pupykin.s+arch@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=shibumi&SeB=m shibumi]||[[User:shibumi|Christian Rebischke]]||Chris.Rebischke [at] archlinux [dot] org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=stativ&SeB=m stativ]||Lukas Jirkovsky||l.jirkovsky strange_curved_character gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=svenstaro&SeB=m svenstaro]||[[User:svenstaro|Sven-Hendrik Haase]]||sh@lutzhaase.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=tensor5&SeB=m tensor5]||Nicola Squartini||tensor5@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=wild&SeB=m wild]||[[User:vild|Dan Printzell]]||[mailto:arch@vild.io arch@vild.io]<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Xyne&SeB=m Xyne]||Xyne||ca . archlinux @ xyne, in reverse order<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=xyproto&SeB=m xyproto]||Alexander F. Rødseth||xyproto@archlinux.org<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=yan12125&SeB=m yan12125]||[[User:Yan12125|Chih-Hsuan Yen]]||yan12125@gmail.com<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=zorun&SeB=m zorun]||Baptiste Jonglez||archlinux bitsofnetworks org<br />
|}<br />
<br />
== Inactive Trusted Users ==<br />
{| class="wikitable"<br />
! Nick<br />
! Name<br />
! E-Mail<br />
! Comments/Reference<br />
|-<br />
|}<br />
<br />
== Some Past Trusted Users ==<br />
{| class="wikitable"<br />
! Nick<br />
! Name<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=abhidg&SeB=m abhidg]||Abhishek Dasgupta<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Allan&SeB=m Allan]||Allan McRae<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Ambrevar&SeB=m Ambrevar]||[[User:Ambrevar|Pierre Neidhardt]]<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=anders&SeB=m anders]||Anders Bergh<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=angvp&SeB=m angvp]||[[User:Angvp|Angel Velásquez]]<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Atsutane&SeB=m Atsutane]||Thorsten Töpper<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=bardo&SeB=m bardo]||Corrado Primier<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=ndr&SeB=m ndr]||Andrea Scarpino<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=bfinch&SeB=m bfinch]||Bob Finch<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=brain0&SeB=m brain0]||Thomas Bächler<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=bjorn&SeB=m bjorn]||[[User:Bjørn|Bjørn Lindeijer]]<br />
|- <br />
|[https://aur.archlinux.org/packages/?K=Cinelli&SeB=m cinelli] ||Federico Cinelli<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=codemac&SeB=m codemac]||Jeff Mickey<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=cmb&SeB=m cmb]||Chris Brannon<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Daenyth&SeB=m Daenyth]||Daenyth Blank<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=DaNiMoTh&SeB=m DaNiMoTh]||JJ. DaNiMoTh<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=dejari&SeB=m dejari]||Leslie P. Polzer<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=dsa&SeB=m dsa]||Douglas Soares de Andrade<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=dtw&SeB=m dtw]||Phil Dillon-Thiselton<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=elasticdog&SeB=m elasticdog]||Aaron Bull Schaefer<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=encelo&SeB=m encelo]||Angelo Theodorou<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=even&SeB=m even] ||Kessia Pinheiro<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=faidoc&SeB=m Faidoc]||Alexandre Filgueira<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=falconindy&SeB=m falconindy]||Dave Reisner<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=foutrelis&SeB=m foutrelis]||Evangelos Foutras<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=filoktetes&SeB=m filoktetes]||Robert Emil Berge<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=firmicus&SeB=m firmicus]||François Charette<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=flexiondotorg&SeB=m flexiondotorg]||Martin Wimpress<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=ganja_guru&SeB=m ganja_guru]||Varun Acharya<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=gcarrier&SeB=m gcarrier]||Geoffroy Carrier<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Ghost1227&SeB=m Ghost1227]||Dan Griffiths<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=gtmanfred&SeB=m gtmanfred]||Daniel Wallace<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=gummibaerchen&SeB=m gummibaerchen]||Timm Preetz<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=hdoria&SeB=m hdoria]||Hugo Doria<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=iphitus&SeB=m iphitus]||James Rayner<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=itsbrad212&SeB=m itsbrad212]||Brad Fanella<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=kaitocracy&SeB=m kaitocracy]||Kaiting Chen<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=louipc&SeB=m louipc]||Loui Chang<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=mOLOk&SeB=m mOLOk]||Alessio Bolognino<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=nesl247&SeB=m nesl247]||Alex Heck<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Neverth&SeB=m Neverth]||Mikko Seppälä<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Partition&SeB=m Partition]||Mateusz Herych<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=petelewis&SeB=m petelewis]||Peter Lewis<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=PirateJonno&SeB=m PirateJonno]||Jonathan Conder<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=phrakture&SeB=m phrakture]||Aaron Griffin<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Pierre&SeB=m Pierre]||Pierre Schmitz<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=pizzapunk&SeB=m pizzapunk]||Alexander Fehr<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=pjmattal&SeB=m pjmattal]||Paul Mattal<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=pressh&SeB=m pressh]||Ronald van Haren<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Ranguvar&SeB=m Ranguvar]||Devin Cofer<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Romashka&SeB=m Romashka]||Roman Kyrylych<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=shastry&SeB=m shastry]||Vinay S Shastry<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Snowman&SeB=m Snowman]||Eric Bélanger<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=shinlun&SeB=m shinlun]||Shinlun Hsieh<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=speps&SeB=m speps]||SpepS<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=StefanHusmann&SeB=m StefanHusmann]||Stefan Husmann<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=STiAT&SeB=m STiAT]||Georg Grabler<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=swiergot&SeB=m swiergot]||Jaroslaw Swierczynski<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=tardo&SeB=m tardo]||Shehzad Qureshi<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=td123&SeB=m td123]||Thomas Dziedzic<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=thatch45&SeB=m thatch45]||Thomas S Hatch<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=thotypous&SeB=m thotypous]||Paulo Matias<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=tredaelli&SeB=m tredaelli]||Timothy Redaelli<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=vegai&SeB=m vegai]||Vesa Kaihlavirta<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=voidnull&SeB=m voidnull]||Giovanni Scafora<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=wizzomafizzo&SeB=m wizzomafizzo]||Callan Barrett<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=wonder&SeB=m wonder]|| Ionut Biru<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Xilon&SeB=m Xilon]||Sebastian Nowicki<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=xterminus&SeB=m xterminus]||Charles Mauch<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=zeus&SeB=m zeus]||Zhukov Pavel<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=Dicebot&SeB=m Dicebot]||Mihails Strasuns<br />
|-<br />
|[https://aur.archlinux.org/packages.php?K=thestinger&SeB=m thestinger]||Daniel Micay<br />
|}</div>Hashworkshttps://wiki.archlinux.org/index.php?title=Chromium&diff=471459Chromium2017-03-21T01:02:32Z<p>Hashworks: Add troubleshooting info for chromecasts in the network</p>
<hr />
<div>[[Category:Web browser]]<br />
[[de:Chromium]]<br />
[[es:Chromium]]<br />
[[fr:chromium]]<br />
[[it:Chromium]]<br />
[[ja:Chromium]]<br />
[[ru:Chromium]]<br />
[[zh-hans:Chromium]]<br />
{{Related articles start}}<br />
{{Related|Chromium/Tips and tricks}}<br />
{{Related|Browser plugins}}<br />
{{Related|Firefox}}<br />
{{Related|Opera}}<br />
{{Related articles end}}<br />
<br />
[[Wikipedia:Chromium (web browser)|Chromium]] is an open-source graphical web browser from "The Chromium Project", based on the [[Wikipedia:Blink (web engine)|Blink]] rendering engine.<br />
<br />
== Installation ==<br />
<br />
The open-source project, '''Chromium''', can be [[install]]ed with the {{Pkg|chromium}} package. <br />
<br />
Other alternatives include:<br />
<br />
* {{App|Chromium Beta Channel|the beta version|https://googlechromereleases.blogspot.com/|{{AUR?|chromium-beta}}}}<br />
* {{App|Chromium Dev Channel|the development version|https://googlechromereleases.blogspot.com/|{{AUR|chromium-dev}}}}<br />
* {{App|Chromium snapshot builds|the untested nightly version|https://build.chromium.org/|{{AUR|chromium-snapshot-bin}}}}<br />
* {{App|Chromium with [[VA-API]] support|with a patch to enable VA-API|https://www.chromium.org/|{{AUR|chromium-vaapi}}}}<br />
* {{App|Chromium with GTK+ 3|built with gtk3 instead of gtk2|https://googlechromereleases.blogspot.com/|{{AUR|chromium-gtk3}}}}<br />
<br />
The derived browser, '''Google Chrome''', bundled with Widevine [[Wikipedia:Encrypted Media Extensions|EME]] (for e.g. Netflix), can be [[install]]ed with the {{AUR|google-chrome}} package.<br />
<br />
Other alternatives include:<br />
<br />
* {{App|Google Chrome Beta Channel|the beta version|https://www.google.com/chrome|{{AUR|google-chrome-beta}}}}<br />
* {{App|Google Chrome Dev Channel|the development version|https://www.google.com/chrome|{{AUR|google-chrome-dev}}}}<br />
<br />
{{Note|Google Chrome dropped 32 bits support, and only supports 64 bits installation}}<br />
<br />
See these [https://chromium.googlesource.com/chromium/src/+/master/docs/chromium_browser_vs_google_chrome.md two] [http://news.softpedia.com/news/Google-Chrome-vs-Chromium-Understanding-Stable-Beta-Dev-Releases-and-Version-No-140060.shtml articles] for an explanation of the differences between Stable/Beta/Dev, as well as Chromium vs. Chrome and an explanation of the version numbering.<br />
<br />
On top of the different Chromium build channels, a number of forks exist with more or less special features; see [[List of applications#Blink-based]].<br />
<br />
== Configuration ==<br />
<br />
=== Default applications ===<br />
<br />
To set Chromium as the default browser and to change which applications Chromium launches when opening downloaded files, see [[default applications]].<br />
<br />
=== Flash Player plugin ===<br />
<br />
{{Note|Chromium no longer supports the Netscape plugin API (NPAPI), so {{pkg|flashplugin}} from the repositories cannot be used.}}<br />
<br />
The Flash Player plugin, using the new Pepper plugin API, is automatically installed when using Google Chrome.<br />
<br />
To install it for Chromium, [[install]] the {{AUR|pepper-flash}} package.<br />
<br />
Make sure Flash is allowed to run in {{ic|chrome://settings/content}}.<br />
<br />
=== Widevine Content Decryption Module plugin ===<br />
<br />
Widevine is Google's Encrypted Media Extensions (EME) Content Decryption Module (CDM). It is used to watch premium video content such as Netflix. It is automatically installed when using Google Chrome.<br />
<br />
To install it for Chromium, [[install]] the {{AUR|chromium-widevine}} package.<br />
<br />
Make sure ''Allow sites to play protected content'' is checked in {{ic|chrome://settings/content}}.<br />
<br />
=== PDF viewer plugin ===<br />
<br />
Chromium and Google Chrome are bundled with the ''Chromium PDF Viewer'' plugin, so installing a third-party plugin is not required.<br />
<br />
If you prefer another implementation, check ''Open PDF files in the default PDF viewer application'' at the bottom of {{ic|chrome://settings/content}}, and install one of the alternatives from [[Browser plugins#PDF viewer]].<br />
<br />
=== Certificates ===<br />
<br />
Chromium uses [[Network Security Services|NSS]] for certificate management. Certificates can be managed in {{ic|chrome://settings/certificates}}.<br />
<br />
== Tips and tricks ==<br />
<br />
See the main article: [[Chromium/Tips and tricks]].<br />
<br />
<br />
== Troubleshooting ==<br />
<br />
=== Constant freezes under KDE ===<br />
<br />
[[Uninstall]] {{pkg|libcanberra-pulse}}. See: [https://bbs.archlinux.org/viewtopic.php?pid=1228558 BBS#1228558].<br />
<br />
=== Fonts ===<br />
<br />
{{Note|Chromium does not fully integrate with fontconfig/GTK/Pango/X/etc. due to its sandbox. For more information, see the [https://dev.chromium.org/developers/linux-technical-faq Linux Technical FAQ].}}<br />
<br />
==== Font rendering issues in PDF plugin ====<br />
<br />
To fix the font rendering in some PDFs one has to install the {{Pkg|ttf-liberation}} package, otherwise the substituted font causes text to run into other text. This was [https://code.google.com/p/chromium/issues/detail?id=369991 reported on the chromium bug tracker] by an Arch user.<br />
<br />
=== Force 3D acceleration ===<br />
<br />
{{Warning|Disabling the rendering blacklist may cause unstable behaviour, including crashes of the host. See the bug reports in {{ic|chrome://gpu}}.}}<br />
<br />
First follow [[Hardware video acceleration]]. Then, to force 3D rendering, ''enable'' the flags: "Override software rendering list", "GPU rasterization", "Zero-copy rasterizer" in {{ic|chrome://flags}}. Check if it is working in {{ic|chrome://gpu}}. This may also alleviate tearing issues with the [[radeon]] driver.<br />
<br />
If "Native GpuMemoryBuffers" under {{ic|chrome://gpu}} mentions software rendering, you additionally need to pass the {{ic|--enable-native-gpu-memory-buffers}} flag, or some optimizations (like the zero-copy rasterizer) won't do anything. This flag isn't available under {{ic|chrome://flags}} - it must be passed in either the chromium-flags.conf file (as noted in [[Chromium/Tips_and_tricks#Making_flags_persistent]]) or directly on the command line.<br />
<br />
=== WebGL ===<br />
{{Warning|[[Catalyst]] does not support the {{ic|GL_ARB_robustness}} extension. When using this driver, it is possible that a malicious site could use WebGL to perform a DoS attack on your graphic card.}}<br />
<br />
There is the possibility that your graphics card has been blacklisted by Chromium. See [[#Force 3D acceleration]].<br />
<br />
If you are using Chromium with [[Bumblebee]], WebGL might crash due to GPU sandboxing. In this case, you can disable GPU sandboxing with {{ic|optirun chromium --disable-gpu-sandbox}}.<br />
<br />
Visit {{ic|chrome://gpu/}} for debugging information about WebGL support.<br />
<br />
Chromium can save incorrect data about your GPU in your user profile (e.g. if you use switch between an Nvidia card using Optimus and Intel, it will show the Nvidia card in {{ic|chrome://gpu}} even when you're not using it or primusrun/optirun). Running using a different user directory, e.g, {{ic|1=chromium --user-data-dir=$(mktemp -d)}} may solve this issue. For a persistent solution you can reset the GPU information by deleting {{ic|~/.config/chromium/Local\ State}}.<br />
<br />
=== Distorted GUI ===<br />
<br />
Chromium's graphical interface may look unsightly, distorted and zoomed in on high-DPI displays. To disable any attempts to scale display according to device DPI, use {{ic|1=--force-device-scale-factor=1}}.<br />
<br />
=== Disable keyring password prompt ===<br />
<br />
{{Accuracy|1=Is this a reference to a chrome 53 bug? [https://bbs.archlinux.org/viewtopic.php?id=216736] If so, it's fixed in 53.0.2785.101-1}}<br />
<br />
See [[GNOME/Keyring#Passwords are not remembered]]. You may also need to edit the Chromium command line to append {{ic|1=--password-store=gnome}}.<br />
<br />
=== Chromecasts in the network are not discovered ===<br />
<br />
You will need to enable the Media Router Component Extension in chrome://flags/#load-media-router-component-extension .<br />
<br />
== See also ==<br />
<br />
* [https://www.chromium.org/ Chromium homepage]<br />
* [https://googlechromereleases.blogspot.com Google Chrome release notes]<br />
* [https://chrome.google.com/webstore/category/home Chrome web store]<br />
* [[Wikipedia:Chromium (web browser)#Differences from Google Chrome|Differences between Chromium and Google Chrome]]<br />
* [http://peter.sh/experiments/chromium-command-line-switches/ List of Chromium command-line switches]</div>Hashworkshttps://wiki.archlinux.org/index.php?title=Zabbix&diff=450831Zabbix2016-09-14T13:50:08Z<p>Hashworks: Undo revision 450830 by Hashworks (talk)</p>
<hr />
<div>[[Category:Network monitoring]]<br />
[[ja:Zabbix]]<br />
[[ru:Zabbix]]<br />
[http://zabbix.com Zabbix] is a full-featured monitoring solution for larger networks. It can discover all kind of networking devices using different methods, check machine states and applications, sending pre-defined alarm messages and visualize complex data correlations.<br />
<br />
== Server setup ==<br />
<br />
=== Installation ===<br />
<br />
If you want to use the Zabbix server with [[MariaDB]], install {{AUR|zabbix-server-mysql}} from the [[AUR]]. For [[PostgreSQL]] as database backend, you should use {{AUR|zabbix-server}}. You also have to choose a web server with PHP support, e.g.:<br />
<br />
* [[Apache HTTP Server]]<br />
* [[Lighttpd]]<br />
* [[nginx]]<br />
<br />
Or one of the other servers found in the [[:Category:Web server|web server]] category.<br />
You may edit the [[PKGBUILD]]s if you plan to use Nginx as web-server, since by default they have {{Pkg|apache}} and {{Pkg|php-apache}} as dependency.<br />
<br />
=== Configuration ===<br />
<br />
Symlink the Zabbix web application directory to your http document root, e.g.:<br />
<br />
$ ln -s /usr/share/webapps/zabbix /srv/http/zabbix<br />
<br />
Make sure to adjust following variables to these minimal values in your {{ic|php.ini}}:<br />
<br />
extension=bcmath.so<br />
extension=gd.so<br />
extension=sockets.so<br />
extension=mysqli.so<br />
post_max_size = 16M<br />
max_execution_time = 300<br />
max_input_time = 300<br />
date.timezone = "UTC"<br />
<br />
In this example, we create on localhost a MariaDB database called {{ic|zabbix}} for the user {{ic|zabbix}} identified by the password {{ic|test}} and then import the database templates. This connection will be later used by the Zabbix server and web application:<br />
<br />
$ mysql -u root -p -e "create database zabbix"<br />
$ mysql -u root -p -e "grant all on zabbix.* to zabbix@localhost identified by 'test'"<br />
$ mysql -u zabbix -p zabbix < /usr/share/zabbix/database/schema.sql<br />
$ mysql -u zabbix -p zabbix < /usr/share/zabbix/database/images.sql<br />
$ mysql -u zabbix -p zabbix < /usr/share/zabbix/database/data.sql<br />
<br />
=== Starting ===<br />
<br />
[[Enable]] and [[start]] the {{ic|zabbix-server}} service.<br />
<br />
Finally you can access Zabbix via your local web server, e.g.: http://127.0.0.1/zabbix, finish the installation wizard and access the frontend the first time. The default username is {{ic|Admin}} and password {{ic|zabbix}}.<br />
<br />
See appendix for a link to the official documentation, which explains all further steps in using it.<br />
<br />
== Agent setup ==<br />
<br />
=== Installation ===<br />
<br />
Currently, the server package already includes {{AUR|zabbix-agent}}, so you do not have to install this package on your monitoring server. However, for monitoring targets, the client part is more minimal, standalone and easy to deploy, just install {{AUR|zabbix-agent}}.<br />
<br />
=== Configuration ===<br />
<br />
Simply edit the {{ic|zabbix_agentd.conf}} and replace the server variable with the IP of your monitoring server. Only servers from this/these IP will be allowed to access the agent.<br />
<br />
Server=<IP of Zabbix server><br />
ServerActive=<IP of Zabbix server><br />
<br />
Further make sure the port {{ic|10050}} on your device being monitored is not blocked and is properly forwarded.<br />
<br />
=== Starting ===<br />
<br />
[[Enable]] and [[start]] the {{ic|zabbix-agentd}} service.<br />
<br />
== Tips and tricks ==<br />
<br />
=== Debugging a Zabbix agent ===<br />
<br />
On the client site, you can check the state of an item like this:<br />
<br />
zabbix_agentd -t hdd.smart[sda,Temperature_Celsius]<br />
<br />
On the server/monitoring site, try this:<br />
<br />
zabbix_get -s ''host'' -k hdd.smart[sda,Temperature_Celsius]<br />
<br />
=== Monitor ArchLinux system updates ===<br />
<br />
Here's an approach on how to monitor your ArchLinux clients for available system update using a custom {{ic|UserParameter}}:<br />
<br />
{{hc|/etc/zabbix/zabbix_agentd.conf|<nowiki>Include=/etc/zabbix/zabbix_agentd.conf.d/*.conf</nowiki>}}<br />
<br />
{{hc|/etc/zabbix/zabbix_agentd.conf.d/archlinuxupdates.conf|<nowiki>UserParameter=archlinuxupdates,checkupdates | wc -l</nowiki>}}<br />
<br />
You have to restart {{ic|zabbix-agentd}} to apply the new configuration. The keyword for the item you later use in the web frontend is {{ic|archlinuxupdates}}. It returns an integer representing the count of available updates.<br />
<br />
== See also ==<br />
<br />
* [https://www.zabbix.com/documentation/doku.php?id=2.0 Official manual for version 2.0]</div>Hashworkshttps://wiki.archlinux.org/index.php?title=Zabbix&diff=450830Zabbix2016-09-14T13:43:27Z<p>Hashworks: Fix example mysql command password</p>
<hr />
<div>[[Category:Network monitoring]]<br />
[[ja:Zabbix]]<br />
[[ru:Zabbix]]<br />
[http://zabbix.com Zabbix] is a full-featured monitoring solution for larger networks. It can discover all kind of networking devices using different methods, check machine states and applications, sending pre-defined alarm messages and visualize complex data correlations.<br />
<br />
== Server setup ==<br />
<br />
=== Installation ===<br />
<br />
If you want to use the Zabbix server with [[MariaDB]], install {{AUR|zabbix-server-mysql}} from the [[AUR]]. For [[PostgreSQL]] as database backend, you should use {{AUR|zabbix-server}}. You also have to choose a web server with PHP support, e.g.:<br />
<br />
* [[Apache HTTP Server]]<br />
* [[Lighttpd]]<br />
* [[nginx]]<br />
<br />
Or one of the other servers found in the [[:Category:Web server|web server]] category.<br />
You may edit the [[PKGBUILD]]s if you plan to use Nginx as web-server, since by default they have {{Pkg|apache}} and {{Pkg|php-apache}} as dependency.<br />
<br />
=== Configuration ===<br />
<br />
Symlink the Zabbix web application directory to your http document root, e.g.:<br />
<br />
$ ln -s /usr/share/webapps/zabbix /srv/http/zabbix<br />
<br />
Make sure to adjust following variables to these minimal values in your {{ic|php.ini}}:<br />
<br />
extension=bcmath.so<br />
extension=gd.so<br />
extension=sockets.so<br />
extension=mysqli.so<br />
post_max_size = 16M<br />
max_execution_time = 300<br />
max_input_time = 300<br />
date.timezone = "UTC"<br />
<br />
In this example, we create on localhost a MariaDB database called {{ic|zabbix}} for the user {{ic|zabbix}} identified by the password {{ic|test}} and then import the database templates. This connection will be later used by the Zabbix server and web application:<br />
<br />
$ mysql -u root -p -e "create database zabbix"<br />
$ mysql -u root -p -e "grant all on zabbix.* to zabbix@localhost identified by 'test'"<br />
$ mysql -u zabbix -p test < /usr/share/zabbix/database/schema.sql<br />
$ mysql -u zabbix -p test < /usr/share/zabbix/database/images.sql<br />
$ mysql -u zabbix -p test < /usr/share/zabbix/database/data.sql<br />
<br />
=== Starting ===<br />
<br />
[[Enable]] and [[start]] the {{ic|zabbix-server}} service.<br />
<br />
Finally you can access Zabbix via your local web server, e.g.: http://127.0.0.1/zabbix, finish the installation wizard and access the frontend the first time. The default username is {{ic|Admin}} and password {{ic|zabbix}}.<br />
<br />
See appendix for a link to the official documentation, which explains all further steps in using it.<br />
<br />
== Agent setup ==<br />
<br />
=== Installation ===<br />
<br />
Currently, the server package already includes {{AUR|zabbix-agent}}, so you do not have to install this package on your monitoring server. However, for monitoring targets, the client part is more minimal, standalone and easy to deploy, just install {{AUR|zabbix-agent}}.<br />
<br />
=== Configuration ===<br />
<br />
Simply edit the {{ic|zabbix_agentd.conf}} and replace the server variable with the IP of your monitoring server. Only servers from this/these IP will be allowed to access the agent.<br />
<br />
Server=<IP of Zabbix server><br />
ServerActive=<IP of Zabbix server><br />
<br />
Further make sure the port {{ic|10050}} on your device being monitored is not blocked and is properly forwarded.<br />
<br />
=== Starting ===<br />
<br />
[[Enable]] and [[start]] the {{ic|zabbix-agentd}} service.<br />
<br />
== Tips and tricks ==<br />
<br />
=== Debugging a Zabbix agent ===<br />
<br />
On the client site, you can check the state of an item like this:<br />
<br />
zabbix_agentd -t hdd.smart[sda,Temperature_Celsius]<br />
<br />
On the server/monitoring site, try this:<br />
<br />
zabbix_get -s ''host'' -k hdd.smart[sda,Temperature_Celsius]<br />
<br />
=== Monitor ArchLinux system updates ===<br />
<br />
Here's an approach on how to monitor your ArchLinux clients for available system update using a custom {{ic|UserParameter}}:<br />
<br />
{{hc|/etc/zabbix/zabbix_agentd.conf|<nowiki>Include=/etc/zabbix/zabbix_agentd.conf.d/*.conf</nowiki>}}<br />
<br />
{{hc|/etc/zabbix/zabbix_agentd.conf.d/archlinuxupdates.conf|<nowiki>UserParameter=archlinuxupdates,checkupdates | wc -l</nowiki>}}<br />
<br />
You have to restart {{ic|zabbix-agentd}} to apply the new configuration. The keyword for the item you later use in the web frontend is {{ic|archlinuxupdates}}. It returns an integer representing the count of available updates.<br />
<br />
== See also ==<br />
<br />
* [https://www.zabbix.com/documentation/doku.php?id=2.0 Official manual for version 2.0]</div>Hashworkshttps://wiki.archlinux.org/index.php?title=Zabbix&diff=450829Zabbix2016-09-14T13:37:45Z<p>Hashworks: Removed empty line</p>
<hr />
<div>[[Category:Network monitoring]]<br />
[[ja:Zabbix]]<br />
[[ru:Zabbix]]<br />
[http://zabbix.com Zabbix] is a full-featured monitoring solution for larger networks. It can discover all kind of networking devices using different methods, check machine states and applications, sending pre-defined alarm messages and visualize complex data correlations.<br />
<br />
== Server setup ==<br />
<br />
=== Installation ===<br />
<br />
If you want to use the Zabbix server with [[MariaDB]], install {{AUR|zabbix-server-mysql}} from the [[AUR]]. For [[PostgreSQL]] as database backend, you should use {{AUR|zabbix-server}}. You also have to choose a web server with PHP support, e.g.:<br />
<br />
* [[Apache HTTP Server]]<br />
* [[Lighttpd]]<br />
* [[nginx]]<br />
<br />
Or one of the other servers found in the [[:Category:Web server|web server]] category.<br />
You may edit the [[PKGBUILD]]s if you plan to use Nginx as web-server, since by default they have {{Pkg|apache}} and {{Pkg|php-apache}} as dependency.<br />
<br />
=== Configuration ===<br />
<br />
Symlink the Zabbix web application directory to your http document root, e.g.:<br />
<br />
$ ln -s /usr/share/webapps/zabbix /srv/http/zabbix<br />
<br />
Make sure to adjust following variables to these minimal values in your {{ic|php.ini}}:<br />
<br />
extension=bcmath.so<br />
extension=gd.so<br />
extension=sockets.so<br />
extension=mysqli.so<br />
post_max_size = 16M<br />
max_execution_time = 300<br />
max_input_time = 300<br />
date.timezone = "UTC"<br />
<br />
In this example, we create on localhost a MariaDB database called {{ic|zabbix}} for the user {{ic|zabbix}} identified by the password {{ic|test}} and then import the database templates. This connection will be later used by the Zabbix server and web application:<br />
<br />
$ mysql -u root -p -e "create database zabbix"<br />
$ mysql -u root -p -e "grant all on zabbix.* to zabbix@localhost identified by 'test'"<br />
$ mysql -u zabbix -p zabbix < /usr/share/zabbix/database/schema.sql<br />
$ mysql -u zabbix -p zabbix < /usr/share/zabbix/database/images.sql<br />
$ mysql -u zabbix -p zabbix < /usr/share/zabbix/database/data.sql<br />
<br />
=== Starting ===<br />
<br />
[[Enable]] and [[start]] the {{ic|zabbix-server}} service.<br />
<br />
Finally you can access Zabbix via your local web server, e.g.: http://127.0.0.1/zabbix, finish the installation wizard and access the frontend the first time. The default username is {{ic|Admin}} and password {{ic|zabbix}}.<br />
<br />
See appendix for a link to the official documentation, which explains all further steps in using it.<br />
<br />
== Agent setup ==<br />
<br />
=== Installation ===<br />
<br />
Currently, the server package already includes {{AUR|zabbix-agent}}, so you do not have to install this package on your monitoring server. However, for monitoring targets, the client part is more minimal, standalone and easy to deploy, just install {{AUR|zabbix-agent}}.<br />
<br />
=== Configuration ===<br />
<br />
Simply edit the {{ic|zabbix_agentd.conf}} and replace the server variable with the IP of your monitoring server. Only servers from this/these IP will be allowed to access the agent.<br />
<br />
Server=<IP of Zabbix server><br />
ServerActive=<IP of Zabbix server><br />
<br />
Further make sure the port {{ic|10050}} on your device being monitored is not blocked and is properly forwarded.<br />
<br />
=== Starting ===<br />
<br />
[[Enable]] and [[start]] the {{ic|zabbix-agentd}} service.<br />
<br />
== Tips and tricks ==<br />
<br />
=== Debugging a Zabbix agent ===<br />
<br />
On the client site, you can check the state of an item like this:<br />
<br />
zabbix_agentd -t hdd.smart[sda,Temperature_Celsius]<br />
<br />
On the server/monitoring site, try this:<br />
<br />
zabbix_get -s ''host'' -k hdd.smart[sda,Temperature_Celsius]<br />
<br />
=== Monitor ArchLinux system updates ===<br />
<br />
Here's an approach on how to monitor your ArchLinux clients for available system update using a custom {{ic|UserParameter}}:<br />
<br />
{{hc|/etc/zabbix/zabbix_agentd.conf|<nowiki>Include=/etc/zabbix/zabbix_agentd.conf.d/*.conf</nowiki>}}<br />
<br />
{{hc|/etc/zabbix/zabbix_agentd.conf.d/archlinuxupdates.conf|<nowiki>UserParameter=archlinuxupdates,checkupdates | wc -l</nowiki>}}<br />
<br />
You have to restart {{ic|zabbix-agentd}} to apply the new configuration. The keyword for the item you later use in the web frontend is {{ic|archlinuxupdates}}. It returns an integer representing the count of available updates.<br />
<br />
== See also ==<br />
<br />
* [https://www.zabbix.com/documentation/doku.php?id=2.0 Official manual for version 2.0]</div>Hashworkshttps://wiki.archlinux.org/index.php?title=Zabbix&diff=450828Zabbix2016-09-14T13:37:22Z<p>Hashworks: Removed always_populate_raw_post_data = -1 since it's deprecated since PHP 5.6 and removed since 7.0 http://php.net/manual/en/ini.core.php#ini.always-populate-raw-post-data</p>
<hr />
<div>[[Category:Network monitoring]]<br />
[[ja:Zabbix]]<br />
[[ru:Zabbix]]<br />
[http://zabbix.com Zabbix] is a full-featured monitoring solution for larger networks. It can discover all kind of networking devices using different methods, check machine states and applications, sending pre-defined alarm messages and visualize complex data correlations.<br />
<br />
== Server setup ==<br />
<br />
=== Installation ===<br />
<br />
If you want to use the Zabbix server with [[MariaDB]], install {{AUR|zabbix-server-mysql}} from the [[AUR]]. For [[PostgreSQL]] as database backend, you should use {{AUR|zabbix-server}}. You also have to choose a web server with PHP support, e.g.:<br />
<br />
* [[Apache HTTP Server]]<br />
* [[Lighttpd]]<br />
* [[nginx]]<br />
<br />
Or one of the other servers found in the [[:Category:Web server|web server]] category.<br />
You may edit the [[PKGBUILD]]s if you plan to use Nginx as web-server, since by default they have {{Pkg|apache}} and {{Pkg|php-apache}} as dependency.<br />
<br />
=== Configuration ===<br />
<br />
Symlink the Zabbix web application directory to your http document root, e.g.:<br />
<br />
$ ln -s /usr/share/webapps/zabbix /srv/http/zabbix<br />
<br />
Make sure to adjust following variables to these minimal values in your {{ic|php.ini}}:<br />
<br />
extension=bcmath.so<br />
extension=gd.so<br />
extension=sockets.so<br />
extension=mysqli.so<br />
post_max_size = 16M<br />
max_execution_time = 300<br />
max_input_time = 300<br />
date.timezone = "UTC"<br />
<br />
<br />
In this example, we create on localhost a MariaDB database called {{ic|zabbix}} for the user {{ic|zabbix}} identified by the password {{ic|test}} and then import the database templates. This connection will be later used by the Zabbix server and web application:<br />
<br />
$ mysql -u root -p -e "create database zabbix"<br />
$ mysql -u root -p -e "grant all on zabbix.* to zabbix@localhost identified by 'test'"<br />
$ mysql -u zabbix -p zabbix < /usr/share/zabbix/database/schema.sql<br />
$ mysql -u zabbix -p zabbix < /usr/share/zabbix/database/images.sql<br />
$ mysql -u zabbix -p zabbix < /usr/share/zabbix/database/data.sql<br />
<br />
=== Starting ===<br />
<br />
[[Enable]] and [[start]] the {{ic|zabbix-server}} service.<br />
<br />
Finally you can access Zabbix via your local web server, e.g.: http://127.0.0.1/zabbix, finish the installation wizard and access the frontend the first time. The default username is {{ic|Admin}} and password {{ic|zabbix}}.<br />
<br />
See appendix for a link to the official documentation, which explains all further steps in using it.<br />
<br />
== Agent setup ==<br />
<br />
=== Installation ===<br />
<br />
Currently, the server package already includes {{AUR|zabbix-agent}}, so you do not have to install this package on your monitoring server. However, for monitoring targets, the client part is more minimal, standalone and easy to deploy, just install {{AUR|zabbix-agent}}.<br />
<br />
=== Configuration ===<br />
<br />
Simply edit the {{ic|zabbix_agentd.conf}} and replace the server variable with the IP of your monitoring server. Only servers from this/these IP will be allowed to access the agent.<br />
<br />
Server=<IP of Zabbix server><br />
ServerActive=<IP of Zabbix server><br />
<br />
Further make sure the port {{ic|10050}} on your device being monitored is not blocked and is properly forwarded.<br />
<br />
=== Starting ===<br />
<br />
[[Enable]] and [[start]] the {{ic|zabbix-agentd}} service.<br />
<br />
== Tips and tricks ==<br />
<br />
=== Debugging a Zabbix agent ===<br />
<br />
On the client site, you can check the state of an item like this:<br />
<br />
zabbix_agentd -t hdd.smart[sda,Temperature_Celsius]<br />
<br />
On the server/monitoring site, try this:<br />
<br />
zabbix_get -s ''host'' -k hdd.smart[sda,Temperature_Celsius]<br />
<br />
=== Monitor ArchLinux system updates ===<br />
<br />
Here's an approach on how to monitor your ArchLinux clients for available system update using a custom {{ic|UserParameter}}:<br />
<br />
{{hc|/etc/zabbix/zabbix_agentd.conf|<nowiki>Include=/etc/zabbix/zabbix_agentd.conf.d/*.conf</nowiki>}}<br />
<br />
{{hc|/etc/zabbix/zabbix_agentd.conf.d/archlinuxupdates.conf|<nowiki>UserParameter=archlinuxupdates,checkupdates | wc -l</nowiki>}}<br />
<br />
You have to restart {{ic|zabbix-agentd}} to apply the new configuration. The keyword for the item you later use in the web frontend is {{ic|archlinuxupdates}}. It returns an integer representing the count of available updates.<br />
<br />
== See also ==<br />
<br />
* [https://www.zabbix.com/documentation/doku.php?id=2.0 Official manual for version 2.0]</div>Hashworkshttps://wiki.archlinux.org/index.php?title=Tmux&diff=420681Tmux2016-02-14T10:52:36Z<p>Hashworks: /* Troubleshooting */</p>
<hr />
<div>[[Category:Terminal emulators]]<br />
[[es:Tmux]]<br />
[[ja:Tmux]]<br />
[[ru:Tmux]]<br />
[[tr:Tmux]]<br />
[[zh-CN:Tmux]]<br />
{{Related articles start}}<br />
{{Related|GNU Screen}}<br />
{{Related articles end}}<br />
<br />
[http://tmux.github.io/ Tmux] is a "terminal multiplexer: it enables a number of terminals (or windows), each running a separate program, to be created, accessed, and controlled from a single screen. tmux may be detached from a screen and continue running in the background, then later reattached." <br />
<br />
Tmux is a BSD-licensed alternative to [[GNU Screen]]. Although similar, there are many differences between the programs, as noted on the [https://raw.githubusercontent.com/tmux/tmux/master/FAQ tmux FAQ page].<br />
<br />
== Installation ==<br />
[[Install]] the {{Pkg|tmux}} package.<br />
<br />
== Configuration ==<br />
A user-specific configuration file should be located at {{ic|~/.tmux.conf}}, while a global configuration file should be located at {{ic|/etc/tmux.conf}}. Default configuration files can be found in {{Ic|/usr/share/tmux/}}. <br />
<br />
=== Key bindings ===<br />
<br />
By default, command key bindings are prefixed by {{Ic|Ctrl-b}}. For example, to vertically split a window type {{Ic|Ctrl-b+%}}.<br />
<br />
After splitting a window into multiple panes, a pane can be resized by the hitting prefix key (e.g. {{Ic|Ctrl-b}}) and, while continuing to hold Ctrl, press Left/Right/Up/Down. Swapping panes is achieved in the same manner, but by hitting ''o'' instead of a directional key.<br />
<br />
{{Tip|To mimic [[screen]] key bindings copy {{ic|/usr/share/tmux/screen-keys.conf}} to either of the configuration locations.}}<br />
<br />
Key bindings may be changed with the bind and unbind commands in {{ic|tmux.conf}}. For example, the default prefix binding of {{Ic|Ctrl-b}} can be changed to {{Ic|Ctrl-a}} by adding the following commands in your configuration file:<br />
<br />
{{bc|<br />
unbind C-b<br />
set -g prefix C-a<br />
bind C-a send-prefix<br />
}}<br />
<br />
{{Tip|Quote special characters to use them as prefix. You may also use {{ic|Alt}} (called Meta) instead of {{ic|Ctrl}}. For example: {{ic|set -g prefix m-'\'}}}}<br />
<br />
Additional ways to move between windows include the following:<br />
<br />
Ctrl-b l (Move to the previously selected window)<br />
Ctrl-b w (List all windows / window numbers)<br />
Ctrl-b <window number> (Move to the specified window number, the default bindings are from 0 – 9)<br />
Ctrl-b q (Show pane numbers, when the numbers show up type the key to goto that pane)<br />
<br />
Tmux has a find-window option & key binding to ease navigation of many windows:<br />
<br />
Ctrl-b f <window name> (Search for window name)<br />
Ctrl-b w (Select from interactive list of windows)<br />
<br />
==== Copy Mode ====<br />
<br />
A tmux window may be in one of several modes. The default permits direct access to the terminal attached to the window; the other is copy mode. Once in copy mode you can navigate the buffer including scrolling the history. Use vi or emacs-style key bindings in copy mode. The default is emacs, unless VISUAL or EDITOR contains ‘vi’<br />
<br />
To enter copy mode do the following:<br />
<br />
Ctrl-b [<br />
<br />
You can navigate the buffer as you would in your default editor.<br />
<br />
To quit copy mode, use one of the following keybindings:<br />
<br />
vi mode:<br />
q<br />
emacs mode:<br />
Esc<br />
<br />
=== Browsing URLs ===<br />
To browse URLs inside tmux you must have {{AUR|urlview}} installed and configured.<br />
<br />
Inside a new terminal:<br />
bind-key u capture-pane \; save-buffer /tmp/tmux-buffer \; run-shell "$TERMINAL -e urlview /tmp/tmux-buffer"<br />
<br />
Or inside a new tmux window (no new terminal needed):<br />
bind-key u capture-pane \; save-buffer /tmp/tmux-buffer \; new-window -n "urlview" '$SHELL -c "urlview < /tmp/tmux-buffer"'<br />
<br />
=== Setting the correct term ===<br />
If you are using a 256 colour terminal, you will need to set the correct term in tmux. You can do this in {{ic|tmux.conf}}:<br />
<br />
set -g default-terminal "screen-256color" <br />
<br />
or:<br />
<br />
set -g default-terminal "xterm-256color"<br />
<br />
Also, if tmux messes up, you can force tmux to assume that the terminal support 256 colors, by adding this in your .bashrc:<br />
<br />
alias tmux="tmux -2"<br />
<br />
To enable xterm-keys in your {{ic|tmux.conf}}, you have to add the following line<br />
<br />
set-option -g xterm-keys on<br />
<br />
If you enable xterm-keys in your {{ic|tmux.conf}}, then you need to build a custom terminfo to declare the new escape codes or applications will not know about them. Compile the following with {{ic|tic}} and you can use "xterm-screen-256color" as your TERM:<br />
<br />
# A screen- based TERMINFO that declares the escape sequences<br />
# enabled by the tmux config "set-window-option -g xterm-keys".<br />
#<br />
# Prefix the name with xterm- since some applications inspect<br />
# the TERM *name* in addition to the terminal capabilities advertised.<br />
xterm-screen-256color|GNU Screen with 256 colors bce and tmux xterm-keys,<br />
<br />
# As of Nov'11, the below keys are picked up by<br />
# .../tmux/blob/master/trunk/xterm-keys.c:<br />
kDC=\E[3;2~, kEND=\E[1;2F, kHOM=\E[1;2H,<br />
kIC=\E[2;2~, kLFT=\E[1;2D, kNXT=\E[6;2~, kPRV=\E[5;2~,<br />
kRIT=\E[1;2C,<br />
<br />
# Change this to screen-256color if the terminal you run tmux in<br />
# doesn't support bce:<br />
use=screen-256color-bce,<br />
<br />
=== Other Settings ===<br />
To limit the scrollback buffer to 10000 lines:<br />
set -g history-limit 10000<br />
<br />
Terminal emulator settings can be overridden with<br />
set -ga terminal-overrides ',xterm*:smcup@:rmcup@'<br />
set -ga terminal-override ',rxvt-uni*:XT:Ms=\E]52;%p1%s;%p2%s\007'<br />
<br />
Mouse can be toggled with<br />
bind-key m set-option -g mouse on \; display 'Mouse: ON'<br />
bind-key M set-option -g mouse off \; display 'Mouse: OFF'<br />
<br />
=== Autostart with systemd ===<br />
<br />
There are some notable advantages to starting a tmux server at startup.<br />
Notably, when you start a new tmux session, having the service already running reduces any delays in the startup.<br />
<br />
Furthermore, any customization attached to your tmux session will be retained and your tmux session can be made to persist even if you have never logged in, if you have some reason to do that (like a heavily scripted tmux configuration or shared user tmux sessions).<br />
<br />
The service below starts ''tmux'' for the specified user (i.e. start with {{ic|tmux@''username''.service}}):<br />
<br />
{{hc|/etc/systemd/system/tmux@.service|<nowiki><br />
[Unit]<br />
Description=Start tmux in detached session<br />
<br />
[Service]<br />
Type=forking<br />
User=%I<br />
ExecStart=/usr/bin/tmux new-session -s %u -d<br />
ExecStop=/usr/bin/tmux kill-session -t %u<br />
<br />
[Install]<br />
WantedBy=multi-user.target<br />
</nowiki>}}<br />
<br />
{{Tip|You may want to add {{ic|1=WorkingDirectory=''custom_path''}} to customize working directory.}}<br />
<br />
Alternatively, you can place this file within your [[systemd/User]] directory (without {{ic|1=User=%I}}), for example {{ic|~/.config/systemd/user/tmux.service}}. This way the tmux service will start when you log in.<br />
<br />
== Session initialization ==<br />
You can have tmux open a session with preloaded windows by including those details in your {{ic|~/.tmux.conf}}:<br />
<br />
new -n WindowName Command<br />
neww -n WindowName Command<br />
neww -n WindowName Command<br />
<br />
To start a session with split windows (multiple panes), include the splitw command below the neww you would like to split; thus:<br />
<br />
new -s SessionName -n WindowName Command<br />
neww -n foo/bar foo<br />
splitw -v -p 50 -t 0 bar<br />
selectw -t 1 <br />
selectp -t 0<br />
<br />
would open 2 windows, the second of which would be named foo/bar and would be split vertically in half (50%) with foo running above bar. Focus would be in window 2 (foo/bar), top pane (foo).<br />
<br />
{{Note|Numbering for sessions, windows and panes starts at zero, unless you have specified a base-index of 1 in your {{ic|.conf}} }}<br />
<br />
To manage multiple sessions, source separate session files from your conf file:<br />
<br />
# initialize sessions<br />
bind F source-file ~/.tmux/foo<br />
bind B source-file ~/.tmux/bar<br />
<br />
== Troubleshooting ==<br />
<br />
=== Terminal emulator isn't supporting UTF-8 Mouse Events ===<br />
When stuff like "[M#" or "[Ma" gets pasted into the promt when left-clicking on a terminal emulator with tmux and "mouse on" running it might be that your terminal emulator isn't supporting UTF-8 mouse events, although the encoding is set to UTF-8.<br />
<br />
To solve this issue set:<br />
<br />
set -g mouse-utf8 off<br />
<br />
=== Scrolling issues ===<br />
If you have issues scrolling with Shift-Page Up/Down in your terminal, the following will remove the smcup and rmcup capabilities for any term that reports itself as anything beginning with {{ic|xterm}}:<br />
<br />
set -ga terminal-overrides ',xterm*:smcup@:rmcup@'<br />
<br />
This tricks the terminal emulator into thinking Tmux is a full screen application like pico or mutt[http://superuser.com/questions/310251/use-terminal-scrollbar-with-tmux], which will make the scrollback be recorded properly. Beware however, it will get a bit messed up when switching between windows/panes. Consider using Tmux's native scrollback instead.<br />
=== Mouse scrolling ===<br />
{{Note|This interferes with selection buffer copying and pasting. To copy/paste to/from the selection buffer hold the shift key.}}<br />
If you want to scroll with your mouse wheel, ensure mode-mouse is on in .tmux.conf<br />
set -g mouse on<br />
<br />
You can set scroll History with:<br />
set -g history-limit 30000<br />
<br />
For mouse wheel scrolling as from tmux 2.1 try adding one or both of these to ~/.tmux.conf<br />
bind -T root WheelUpPane if-shell -F -t = "#{alternate_on}" "send-keys -M" "select-pane -t =; copy-mode -e; send-keys -M"<br />
bind -T root WheelDownPane if-shell -F -t = "#{alternate_on}" "send-keys -M" "select-pane -t =; send-keys -M"<br />
<br />
Though the above will only scroll one line at a time, add this solution to scroll an entire page instead<br />
bind -t vi-copy WheelUpPane page-up<br />
bind -t vi-copy WheelDownPane page-down<br />
bind -t emacs-copy WheelUpPane page-up<br />
bind -t emacs-copy WheelDownPane page-down<br />
<br />
=== Fix reverse-video/italic mode in urxvt ===<br />
<br />
{{out of date|You can now use the tmux or tmux-256color terminfo by putting the following line in your tmux.conf {{ic|set -g default-terminal "tmux-256color"}}}}<br />
<br />
If your reverse-video and italic modes are reversed, you may follow these instructions. This happens for example in vim when italics are replaced by highlighting, or in less when the search highlighting is replaced by italics. This is because the screen terminfo doesn't define italics, and the italics escape of urxvt happens to be the standout escape defined in the terminfo. In this solution, you may replace {{ic|1=screen_terminfo="screen"}} by {{ic|1=screen_terminfo="screen-256color"}}.<br />
<br />
mkdir $HOME/.terminfo/<br />
screen_terminfo="screen"<br />
<br />
Create a new terminfo adding the italic escape code:<br />
<br />
infocmp "$screen_terminfo" | sed \<br />
-e 's/^screen[^|]*|[^,]*,/screen-it|screen with italics support,/' \<br />
-e 's/%?%p1%t;3%/%?%p1%t;7%/' \<br />
-e 's/smso=[^,]*,/smso=\\E[7m,/' \<br />
-e 's/rmso=[^,]*,/rmso=\\E[27m,/' \<br />
-e '$s/$/ sitm=\\E[3m, ritm=\\E[23m,/' > /tmp/screen.terminfo<br />
<br />
Compile this terminfo:<br />
<br />
tic /tmp/screen.terminfo<br />
<br />
Then, you must add the following line in your tmux.conf. If you already defined {{ic|1=default-terminal}}, just replace it.<br />
<br />
set -g default-terminal "screen-it"<br />
<br />
The source of this solution can be found at [http://tmux.svn.sourceforge.net/viewvc/tmux/trunk/FAQ], in the section entitled "vim displays reverse video instead of italics, while less displays italics (or just regular text) instead of reverse. What's wrong?".<br />
<br />
=== Shift+F6 not working in Midnight Commander ===<br />
<br />
If the {{ic|Shift+F6}} key combination is not working with either {{ic|1=TERM=screen}} or {{ic|1=TERM=screen-256color}}, then from inside tmux, run this command:<br />
infocmp > screen (or screen-256color)<br />
<br />
Open the file in a text editor, and add the following to the bottom of that file:<br />
kf16=\E[29~,<br />
<br />
Then compile the file with {{ic|tic}}. The keys should be working now.<br />
<br />
== X clipboard integration ==<br />
<br />
{{Tip|The tmux plugin [https://github.com/tmux-plugins/tmux-yank tmux-yank] provides similar functionality.}}<br />
<br />
It is possible to copy tmux selection to X clipboard (and to X primary/secondary selection) and in reverse direction. The following tmux config file snippet effectively integrates X clipboard/selection with the current tmux selection using the program {{Pkg|xsel}}:<br />
<br />
# Emacs style<br />
bind-key -t emacs-copy M-w copy-pipe "xsel -i -p -b"<br />
bind-key C-y run "xsel -o | tmux load-buffer - ; tmux paste-buffer"<br />
<br />
# Vim style<br />
bind-key -t vi-copy y copy-pipe "xsel -i -p -b"<br />
bind-key p run "xsel -o | tmux load-buffer - ; tmux paste-buffer"<br />
<br />
{{pkg|xclip}} could also be used for that purpose, unlike xsel it works better on printing raw bitstream that doesn't fit the current locale. Nevertheless, it is neater to use <code>xsel</code> instead of <code>xclip</code>, because xclip does not close STDOUT after it has read from tmux's buffer. As such, tmux doesn't know that the copy task has completed, and continues to wait for xclip's termination, thereby rendering tmux unresponsive. A workaround is to redirect <code>STDOUT</code> of <code>xclip</code> to <code>/dev/null</code>, like in the following:<br />
<br />
# Vim style<br />
bind-key -t vi-copy y copy-pipe "xclip -i -sel clip > /dev/null"<br />
bind-key p run "xclip -o -sel clip | tmux load-buffer -"<br />
<br />
=== Urxvt middle click ===<br />
<br />
{{Note|To use this, you need to enable mouse support}}<br />
<br />
There is an unofficial perl extension (mentioned in the official [http://sourceforge.net/p/tmux/tmux-code/ci/master/tree/FAQ FAQ]) to enable copying/pasting in and out of urxvt with tmux via Middle Mouse Clicking.<br />
<br />
First, you will need to download the perl script and place it into urxvts perl lib:<br />
<br />
{{bc|wget http://anti.teamidiot.de/static/nei/*/Code/urxvt/osc-xterm-clipboard<br />
mv osc-xterm-clipboard /usr/lib/urxvt/perl/|<br />
}}<br />
<br />
You will also need to enable that perl script in your .Xdefaults:<br />
<br />
{{hc|~/.Xdefaults|<br />
...<br />
*URxvt.perl-ext-common: osc-xterm-clipboard<br />
...<br />
}}<br />
<br />
Next, you want to tell tmux about the new function and enable mouse support (if you haven't already):<br />
<br />
{{hc|~/.tmux.conf|<br />
...<br />
set-option -ga terminal-override ',rxvt-uni*:XT:Ms<nowiki>=</nowiki>\E]52;%p1%s;%p2%s\007'<br />
set -g mouse on<br />
...<br />
}}<br />
<br />
That's it. Be sure to end all instances of tmux before trying the new MiddleClick functionality.<br />
<br />
While in tmux, Shift+MiddleMouseClick will paste the clipboard selection while just MiddleMouseClick will paste your tmux buffer.<br />
Outside of tmux, just use MiddleMouseClick to paste your tmux buffer and your standard Ctrl-c to copy.<br />
<br />
== Tips and tricks ==<br />
=== Start tmux with default session layout ===<br />
To setup your default Tmux session layout, you install {{AUR|tmuxinator}} from [[AUR]]. Test your installation with<br />
<br />
tmuxinator doctor<br />
<br />
==== Get the default layout values ====<br />
Start Tmux as usual and configure your windows and panes layout as you like. When finished, get the current layout values by executing (while you are still within the current Tmux session)<br />
<br />
tmux list-windows<br />
<br />
The output may look like this (two windows with 3 panes and 2 panes layout)<br />
<br />
0: default* (3 panes) [274x83] [layout 20a0,274x83,0,0{137x83,0,0,3,136x83,138,0[136x41,138,0,5,136x41,138,42,6]}] @2 (active)<br />
1: remote- (2 panes) [274x83] [layout e3d3,274x83,0,0[274x41,0,0,4,274x41,0,42,7]] @3 <br />
<br />
The Interesting part you need to copy for later use begins after '''[layout...''' and excludes '''... ] @2 (active)'''. For the first window layout you need to copy e.g. '''20a0,274x83,0,0{137x83,0,0,3,136x83,138,0[136x41,138,0,5,136x41,138,42,6]}'''<br />
<br />
==== Define the default tmux layout ====<br />
<br />
Knowing this, you can exit the current tmux session. Following this, you create your default Tmux session layout by editing Tmuxinator's config file (Don't copy the example, get your layout values as described above)<br />
<br />
{{hc|~/.tmuxinator/default.yml|<nowiki><br />
name: default<br />
root: ~/<br />
windows:<br />
- default:<br />
layout: 20a0,274x83,0,0{137x83,0,0,3,136x83,138,0[136x41,138,0,5,136x41,138,42,6]}<br />
panes:<br />
- clear<br />
- vim<br />
- clear && emacs -nw<br />
- remote:<br />
layout: 24ab,274x83,0,0{137x83,0,0,3,136x83,138,0,4}<br />
panes:<br />
- <br />
- <br />
</nowiki>}}<br />
<br />
The example defines two windows named "default" and "remote". With your determined layout values. For each pane you have to use at least one {{ic|-}} line. Within the first window panes you start the commandline "clear" in pane one, "vim" in pane two and "clear && emacs -nw" executes two commands in pane three on each Tmux start. The second window layout has two panes without defining any start commmands.<br />
<br />
Test the new default layout with (yes, it is "mux"):<br />
<br />
mux default<br />
<br />
==== Autostart tmux with default tmux layout ====<br />
<br />
If you like to start your terminal session with your default Tmux session layout edit<br />
{{hc|~/.bashrc|<nowiki><br />
if [ -z "$TMUX" ]; then<br />
mux default <br />
fi <br />
</nowiki>}}<br />
<br />
====Alternate approach for default session====<br />
Instead of using the above method, one can just write a bash script that when run, will create the default session and attach to it.<br />
Then you can execute it from a terminal to get the pre-designed configuration in that terminal<br />
<br />
#!/bin/bash<br />
tmux new-session -d -n WindowName Command<br />
tmux new-window -n NewWindowName<br />
tmux split-window -v<br />
tmux selectp -t 1<br />
tmux split-window -h<br />
tmux selectw -t 1<br />
tmux -2 attach-session -d<br />
<br />
===Start tmux in urxvt===<br />
Use this command to start urxvt with a started tmux session. I use this with the exec command from my .ratpoisonrc file.<br />
{{bc|<nowiki>urxvt -e bash -c "tmux -q has-session && exec tmux attach-session -d || exec tmux new-session -n$USER -s$USER@$HOSTNAME"</nowiki>}}<br />
<br />
=== Start tmux on every shell login ===<br />
<br />
Simply add the following line of bash code to your .bashrc before your aliases; the code for other shells is very similar:<br />
<br />
{{hc|~/.bashrc|<nowiki><br />
# If not running interactively, do not do anything<br />
[[ $- != *i* ]] && return<br />
[[ -z "$TMUX" ]] && exec tmux<br />
</nowiki>}}<br />
<br />
{{note|This snippet ensures that tmux is not launched inside of itself (something tmux usually already checks for anyway). tmux sets $TMUX to the socket it is using whenever it runs, so if $TMUX isn't set or is length 0, we know we aren't already running tmux.}}<br />
<br />
Add the following snippet to start only one session (unless you start some manually), on login, try attach at first, only create a session if no tmux is running.<br />
<br />
{{bc|<nowiki><br />
# TMUX<br />
if which tmux >/dev/null 2>&1; then<br />
#if not inside a tmux session, and if no session is started, start a new session<br />
test -z "$TMUX" && (tmux attach || tmux new-session)<br />
fi<br />
</nowiki>}}<br />
<br />
The following snippet does the same thing, but also checks tmux is installed before trying to launch it. It also tries to reattach you to an existing tmux session at logout, so that you can shut down every tmux session quickly from the same terminal at logout.<br />
{{bc|<nowiki><br />
# TMUX<br />
if which tmux >/dev/null 2>&1; then<br />
# if no session is started, start a new session<br />
test -z ${TMUX} && tmux<br />
<br />
# when quitting tmux, try to attach<br />
while test -z ${TMUX}; do<br />
tmux attach || break<br />
done<br />
fi<br />
</nowiki>}}<br />
<br />
Another possibility is to try to attach to existing deattached session or start a new session:<br />
<br />
{{bc|<nowiki><br />
if [[ -z "$TMUX" ]] ;then<br />
ID="`tmux ls | grep -vm1 attached | cut -d: -f1`" # get the id of a deattached session<br />
if [[ -z "$ID" ]] ;then # if not available create a new one<br />
tmux new-session<br />
else<br />
tmux attach-session -t "$ID" # if available attach to it<br />
fi<br />
fi<br />
</nowiki>}}<br />
<br />
{{note|Instead of using the bashrc file, you can launch tmux when you start your terminal emulator. (i. e. urxvt -e tmux)}}<br />
<br />
=== Start a non-login shell ===<br />
<br />
Tmux starts a [http://unix.stackexchange.com/questions/38175 login shell] [http://comments.gmane.org/gmane.comp.terminal-emulators.tmux.user/5997 by default], which may result in multiple negative side effects:<br />
<br />
* Users of [[Wikipedia:fortune (Unix)|fortune]] may notice that quotes are printed when creating a new panel.<br />
* The configuration files for login shells such as {{ic|~/.profile}} are interpreted each time a new panel is created, so commands intended to be run on session initialization (e.g. setting audio level) are executed.<br />
<br />
To disable this behaviour, add to {{ic|~/.tmux.conf}}:<br />
<br />
set -g default-command "${SHELL}"<br />
<br />
=== Use tmux windows like tabs ===<br />
<br />
The following settings added to {{ic|~/.tmux.conf}} allow to use tmux windows like tabs, such as those provided by the reference of these hotkeys — [[rxvt-unicode#urxvtq_with_tabbing|urxvt's tabbing extensions]]. An advantage thereof is that these virtual “tabs” are independent of the terminal emulator.<br />
<br />
#urxvt tab like window switching (-n: no prior escape seq)<br />
bind -n S-down new-window<br />
bind -n S-left prev<br />
bind -n S-right next<br />
bind -n C-left swap-window -t -1<br />
bind -n C-right swap-window -t +1<br />
<br />
Of course, those should not overlap with other applications' hotkeys, such as the terminal's. Given that they substitute terminal tabbing that might as well be deactivated, though.<br />
<br />
It can also come handy to supplement the EOT hotkey {{ic|Ctrl+d}} with one for tmux's detach:<br />
<br />
bind-key -n C-j detach<br />
<br />
=== Clients simultaneously interacting with various windows of a session ===<br />
<br />
In [http://mutelight.org/articles/practical-tmux Practical Tmux], Brandur Leach writes:<br />
<br />
: Screen and tmux's behaviour for when multiple clients are attached to one session differs slightly. In Screen, each client can be connected to the session but view different windows within it, but in tmux, all clients connected to one session must view the same window.<br />
: This problem can be solved in tmux by spawning two separate sessions and synchronizing the second one to the windows of the first, then pointing a second new session to the first.<br />
<br />
The script “{{Ic|tmx}}” below implements this — the version here is slightly modified to execute “{{Ic|tmux new-window}}” if “1” is its second parameter. Invoked as {{Ic|tmx <base session name> [1]}} it launches the base session if necessary. Otherwise a new “client” session linked to the base, optionally add a new window and attach, setting it to kill itself once it turns “zombie”.<br />
<br />
{{hc|tmx|2=<nowiki><br />
#!/bin/bash<br />
<br />
#<br />
# Modified TMUX start script from:<br />
# http://forums.gentoo.org/viewtopic-t-836006-start-0.html<br />
#<br />
# Store it to `~/bin/tmx` and issue `chmod +x`.<br />
#<br />
<br />
# Works because bash automatically trims by assigning to variables and by <br />
# passing arguments<br />
trim() { echo $1; }<br />
<br />
if [[ -z "$1" ]]; then<br />
echo "Specify session name as the first argument"<br />
exit<br />
fi<br />
<br />
# Only because I often issue `ls` to this script by accident<br />
if [[ "$1" == "ls" ]]; then<br />
tmux ls<br />
exit<br />
fi<br />
<br />
base_session="$1"<br />
# This actually works without the trim() on all systems except OSX<br />
tmux_nb=$(trim `tmux ls | grep "^$base_session" | wc -l`)<br />
if [[ "$tmux_nb" == "0" ]]; then<br />
echo "Launching tmux base session $base_session ..."<br />
tmux new-session -s $base_session<br />
else<br />
# Make sure we are not already in a tmux session<br />
if [[ -z "$TMUX" ]]; then<br />
echo "Launching copy of base session $base_session ..."<br />
# Session id is date and time to prevent conflict<br />
session_id=`date +%Y%m%d%H%M%S`<br />
# Create a new session (without attaching it) and link to base session <br />
# to share windows<br />
tmux new-session -d -t $base_session -s $session_id<br />
if [[ "$2" == "1" ]]; then<br />
# Create a new window in that session<br />
tmux new-window<br />
fi<br />
# Attach to the new session & kill it once orphaned<br />
tmux attach-session -t $session_id \; set-option destroy-unattached<br />
fi<br />
fi<br />
</nowiki>}}<br />
<br />
A useful setting for this is<br />
<br />
setw -g aggressive-resize on<br />
<br />
added to {{ic|~/.tmux.conf}}. It causes tmux to resize a window based on the smallest client actually viewing it, not on the smallest one attached to the entire session.<br />
<br />
An alternative taken from [http://comments.gmane.org/gmane.comp.terminal-emulators.tmux.user/2632] is to put the following ~/.bashrc:<br />
<br />
{{hc|.bashrc|2=<nowiki><br />
function rsc() {<br />
CLIENTID=$1.`date +%S`<br />
tmux new-session -d -t $1 -s $CLIENTID \; set-option destroy-unattached \; attach-session -t $CLIENTID<br />
}<br />
<br />
function mksc() {<br />
tmux new-session -d -s $1<br />
rsc $1<br />
}<br />
</nowiki>}}<br />
<br />
Citing the author:<br />
<br />
: "mksc foo" creates a always detached permanent client named "foo". It also calls "rsc foo" to create a client to newly created session. "rsc foo" creates a new client grouped by "foo" name. It has destroy-unattached turned on so when I leave it, it kills client.<br />
: Therefore, when my computer looses network connectivity, all "foo.something" clients are killed while "foo" remains. I can then call "rsc foo" to continue work from where I stopped.<br />
<br />
=== Correct the TERM variable according to terminal type ===<br />
Instead of [[#Setting_the_correct_term|setting a fixed TERM variable in tmux]], it is possible to set the proper TERM (either {{ic|screen}} or {{ic|screen-256color}}) according to the type of your terminal emulator:<br />
<br />
{{hc|~/.tmux.conf|<br />
## set the default TERM<br />
set -g default-terminal screen<br />
<br />
## update the TERM variable of terminal emulator when creating a new session or attaching a existing session<br />
set -g update-environment 'DISPLAY SSH_ASKPASS SSH_AGENT_PID SSH_CONNECTION WINDOWID XAUTHORITY TERM'<br />
## determine if we should enable 256-colour support<br />
if "[[ ${TERM} =~ 256color || ${TERM} == fbterm ]]" 'set -g default-terminal screen-256color'<br />
}}<br />
<br />
{{hc|1=~/.zshrc|2=<br />
## workaround for handling TERM variable in multiple tmux sessions properly from http://sourceforge.net/p/tmux/mailman/message/32751663/ by Nicholas Marriott<br />
if [[ -n ${TMUX} && -n ${commands[tmux]} ]];then<br />
case $(tmux showenv TERM 2>/dev/null) in<br />
*256color) ;&<br />
TERM=fbterm)<br />
TERM=screen-256color ;;<br />
*)<br />
TERM=screen<br />
esac<br />
fi<br />
}}<br />
<br />
=== Reload an updated configuration without restarting tmux ===<br />
<br />
By default tmux reads {{ic|~/.tmux.conf}} only if it was not already running. To have tmux load a configuration file afterwards, execute:<br />
<br />
tmux source-file <path><br />
<br />
This can be added to {{ic|~/.tmux.conf}} as e. g.:<br />
<br />
bind r source-file <path><br />
<br />
You can also do ^: and type :<br />
source .tmux.conf<br />
<br />
===Template script to run program in new session resp. attach to existing one===<br />
<br />
This script checks for a program presumed to have been started by a previous run of itself. Unless found it creates a new tmux session and attaches to a window named after and running the program. If however the program was found it merely attaches to the session and selects the window.<br />
<br />
#!/bin/bash<br />
<br />
PID=$(pidof $1)<br />
<br />
if [ -z "$PID" ]; then<br />
tmux new-session -d -s main ;<br />
tmux new-window -t main -n $1 "$*" ;<br />
fi<br />
tmux attach-session -d -t main ;<br />
tmux select-window -t $1 ;<br />
exit 0<br />
<br />
A derived version to run ''irssi'' with the ''nicklist'' plugin can be found on [[Irssi#irssi_with_nicklist_in_tmux|its ArchWiki page]].<br />
<br />
=== Terminal emulator window titles ===<br />
If you SSH into a host in a tmux window, you'll notice the window title of your terminal emulator remains to be {{ic|user@localhost}} rather than {{ic|user@server}}. To allow the title bar to adapt to whatever host you connect to, set the following in {{ic|~/.tmux.conf}}<br />
<br />
set -g set-titles on<br />
set -g set-titles-string "#T"<br />
<br />
For {{ic|set-titles-string}}, {{ic|#T}} will display {{ic|user@host:~}} and change accordingly as you connect to different hosts.<br />
<br />
=== Automatic layouting ===<br />
When creating new splits or destroying older ones the currently selected layout isn't applied. To fix that, add following binds which will apply the currently selected layout to new or remaining panes:<br />
<br />
bind-key -n M-c kill-pane \; select-layout<br />
bind-key -n M-n split-window \; select-layout<br />
<br />
=== Vim friendly configuration ===<br />
<br />
See [https://gist.github.com/anonymous/6bebae3eb9f7b972e6f0] for a configuration friendly to [[vim]] users.<br />
<br />
== See also ==<br />
<br />
* [https://bbs.archlinux.org/viewtopic.php?id=84157&p=1 BBS topic]<br />
* [http://www.dayid.org/os/notes/tm.html Screen and tmux feature comparison]<br />
* [https://github.com/Lokaltog/powerline powerline], a dynamic statusbar for tmux<br />
* [https://github.com/tmux-plugins Plugins for tmux]<br />
<br />
'''Tutorials'''<br />
<br />
* [http://mutelight.org/articles/practical-tmux Practical Tmux]<br />
* [http://www.openbsd.org/faq/faq7.html#tmux Tmux FAQ (OpenBSD)]<br />
* [http://www.openbsd.org/cgi-bin/man.cgi?query=tmux man page (OpenBSD)]<br />
* [http://blog.hawkhost.com/2010/06/28/tmux-the-terminal-multiplexer/ Tmux tutorial Part 1] and [http://blog.hawkhost.com/2010/07/02/tmux-%E2%80%93-the-terminal-multiplexer-part-2 Part 2]</div>Hashworkshttps://wiki.archlinux.org/index.php?title=Logitech_MX_Master&diff=409368Logitech MX Master2015-11-16T11:15:01Z<p>Hashworks: /* Usage */ fix typo</p>
<hr />
<div>[[Category:Mice]]<br />
[http://www.logitech.com/en-us/product/mx-master Logitech MX Master]<br />
<br />
== Usage ==<br />
<br />
Mainly, the mouse should work right away with the supplied USB dongle. To get a [[Bluetooth]] connection working, change the channel on the bottom of the mouse, and click the {{ic|connect}} button. Now, search for the mouse with a bluetooth manager of your choice and engage a connection. In future it should connect as soon as you switch to that channel when your bluetooth is active.<br />
<br />
== Mappings for extra buttons ==<br />
<br />
The vertical wheel and the two buttons near it should work right away, however the thumb button requires some special threatment, and you might want to remap the rest.<br />
<br />
To remap the buttons of the mouse you can use the packages [[xbindkeys]] and {{Pkg|xautomation}}.<br />
<br />
''xbindkeys'' will redirect the buttons and ''xte'' (which is included in xautomation) will execute the custom key presses. To do so, create a config file named {{ic|.xbindkeysrc}} in your home directory.<br />
<br />
Here is a sample configuration for the vertical scroll wheel and the two buttons near it:<br />
<br />
# thumb wheel up => increase volume and unmute <br />
"amixer -D pulse set Master 4000+ unmute"<br />
b:6 <br />
<br />
# thumb wheel down => lower volume <br />
"amixer -D pulse set Master 4000-" <br />
b:7 <br />
<br />
# backward button => previous song <br />
"xte 'key XF86AudioPrev'" <br />
b:8 <br />
<br />
# forward button => next song <br />
"xte 'key XF86AudioNext'" <br />
b:9<br />
<br />
Now start {{ic|xbindkeys}}, preferably add that to the autostart list of your desktop environment.<br />
<br />
The thumb button is special, with the Logitech software available for Windows and Mac, you would be able to map up to 5 actions to it: by pressing the button or by pressing the button and moving the mouse in one of four directions. As of November 2015, there is no way to enable the direction feature using Arch. <br />
<br />
If you look at the keys the button triggers you will notice that it sends a series of keys, confusing xbindkeys. You need to add a short sleep here so xbindkeys will only react on the first keys send so we can at least map one action to it:<br />
<br />
# thumb button => play/pause music <br />
# Credit to gregmuellegger https://bbs.archlinux.org/viewtopic.php?pid=1551271#p1551271 <br />
# We need a sleep here since the button triggers a few more key codes. <br />
# It also triggers Control+Mod2+Control_L and Alt+Mod2+Alt_L. The sleep <br />
# prevents that X receives those keypresses simultaniously. Therefore they <br />
# might interfere and trigger unwanted actions. By the sleep we make sure that<br />
# the Alt+Left is receive as distinct event. <br />
"sleep 0.1 && xte 'key XF86AudioPlay'" <br />
m:0xc + c:23<br />
<br />
Remember that all changes to {{ic|~/.xbindkeysrc}} require a restart of the xbindkeys process: <br />
<br />
$ pkill xbindkeys && xbindkeys</div>Hashworkshttps://wiki.archlinux.org/index.php?title=Logitech_MX_Master&diff=408076Logitech MX Master2015-11-03T22:26:24Z<p>Hashworks: Added inline code to improve the readability</p>
<hr />
<div>[[Category:Mice]]<br />
== Main Usage ==<br />
<br />
Mainly, the Logitech MX Master mouse should work right away with the supplied USB dongle. To get a bluetooth connection working change the channel on the buttom of the mouse and click the "connect" button, now search for the mouse with a bluetooth manager of your choice and engage a connection. In future it should connect as soon as you switch to that channel when your bluetooth is active.<br />
<br />
== Setting up mappings for the extra buttons ==<br />
<br />
The vertical wheel and the two buttons near it should work right away, however the thumb button requires some special threatment and you might want to remap the rest.<br />
<br />
To remap the buttons of the mouse you can use the packages [[xbindkeys]] and xautomation[https://www.archlinux.org/packages/?sort=&repo=Community&q=xautomation&maintainer=&flagged=Not+Flagged].<br />
<br />
<br />
Xbindkeys will redirect the buttons and xte (which is included in xautomation) will execute the custom key presses. To do so create a config file named {{ic|.xbindkeysrc}} in your home directory.<br />
<br />
Here is a sample configuration for the vertical scroll wheel and the two buttons near it:<br />
###################### <br />
# MX Master Settings # <br />
###################### <br />
<br />
# thumb wheel up => increase volume and unmute <br />
"amixer -D pulse set Master 4000+ unmute"<br />
b:6 <br />
<br />
# thumb wheel down => lower volume <br />
"amixer -D pulse set Master 4000-" <br />
b:7 <br />
<br />
# backward button => previous song <br />
"xte 'key XF86AudioPrev'" <br />
b:8 <br />
<br />
# forward button => next song <br />
"xte 'key XF86AudioNext'" <br />
b:9<br />
<br />
Now start {{ic|xbindkeys}}, preferably add that to the autostart list of your desktop environment.<br />
<br />
<br />
The thumb button is kinda special, with the Logitech software available for Windows and Mac you would be able to map up to 5 actions to it: by pressing the button or by pressing the button and moving the mouse in one of four directions. Currently there is no way to enable the direction feature using Arch, feel free to hack it! If you look at the keys the button triggers you will notice that it sends a series of keys, confusing xbindkeys. You need to add a short sleep here so xbindkeys will only react on the first keys send so we can at least map one action to it:<br />
<br />
# thumb button => play/pause music <br />
# Credit to gregmuellegger https://bbs.archlinux.org/viewtopic.php?pid=1551271#p1551271 <br />
# We need a sleep here since the button triggers a few more key codes. <br />
# It also triggers Control+Mod2+Control_L and Alt+Mod2+Alt_L. The sleep <br />
# prevents that X receives those keypresses simultaniously. Therefore they <br />
# might interfere and trigger unwanted actions. By the sleep we make sure that<br />
# the Alt+Left is receive as distinct event. <br />
"sleep 0.1 && xte 'key XF86AudioPlay'" <br />
m:0xc + c:23<br />
<br />
Remember that all changes to {{ic|~/.xbindkeysrc}} require a restart of the xbindkeys process: {{ic|pkill xbindkeys && xbindkeys}}</div>Hashworkshttps://wiki.archlinux.org/index.php?title=Logitech_MX_Master&diff=408075Logitech MX Master2015-11-03T22:21:15Z<p>Hashworks: Created a page because it didn't exist</p>
<hr />
<div>[[Category:Mice]]<br />
== Main Usage ==<br />
<br />
Mainly, the Logitech MX Master mouse should work right away with the supplied USB dongle. To get a bluetooth connection working change the channel on the buttom of the mouse and click the "connect" button, now search for the mouse with a bluetooth manager of your choice and engage a connection. In future it should connect as soon as you switch to that channel when your bluetooth is active.<br />
<br />
== Setting up mappings for the extra buttons ==<br />
<br />
The vertical wheel and the two buttons near it should work right away, however the thumb button requires some special threatment and you might want to remap the rest.<br />
<br />
To remap the buttons of the mouse you can use the packages [[xbindkeys]] and xautomation[https://www.archlinux.org/packages/?sort=&repo=Community&q=xautomation&maintainer=&flagged=Not+Flagged].<br />
<br />
<br />
Xbindkeys will redirect the buttons and xte (which is included in xautomation) will execute the custom key presses. To do so create a config file named ".xbindkeysrc" in your home directory.<br />
<br />
Here is a sample configuration for the vertical scroll wheel and the two buttons near it:<br />
###################### <br />
# MX Master Settings # <br />
###################### <br />
<br />
# thumb wheel up => increase volume and unmute <br />
"amixer -D pulse set Master 4000+ unmute"<br />
b:6 <br />
<br />
# thumb wheel down => lower volume <br />
"amixer -D pulse set Master 4000-" <br />
b:7 <br />
<br />
# backward button => previous song <br />
"xte 'key XF86AudioPrev'" <br />
b:8 <br />
<br />
# forward button => next song <br />
"xte 'key XF86AudioNext'" <br />
b:9<br />
<br />
Now start "xbindkeys", preferably add that to the autostart list of your desktop environment.<br />
<br />
<br />
The thumb button is kinda special, with the Logitech software available for Windows and Mac you would be able to map up to 5 actions to it: by pressing the button or by pressing the button and moving the mouse in one of four directions. Currently there is no way to enable the direction feature using Arch, feel free to hack it! If you look at the keys the button triggers you will notice that it sends a series of keys, confusing xbindkeys. You need to add a short sleep here so xbindkeys will only react on the first keys send so we can at least map one action to it:<br />
<br />
# thumb button => play/pause music <br />
# Credit to gregmuellegger https://bbs.archlinux.org/viewtopic.php?pid=1551271#p1551271 <br />
# We need a sleep here since the button triggers a few more key codes. <br />
# It also triggers Control+Mod2+Control_L and Alt+Mod2+Alt_L. The sleep <br />
# prevents that X receives those keypresses simultaniously. Therefore they <br />
# might interfere and trigger unwanted actions. By the sleep we make sure that<br />
# the Alt+Left is receive as distinct event. <br />
"sleep 0.1 && xte 'key XF86AudioPlay'" <br />
m:0xc + c:23<br />
<br />
Remember that all changes to "~/.xbindkeysrc" requires a restart of the xbindkeys process.</div>Hashworks